# Periods in :id causing Apache routing error

**URL:** <https://www.ruby-forum.com/t/periods-in-id-causing-apache-routing-error/91850>\
**Category:** Rails\
**Created:** [April 12, 2007, 8:48pm UTC](https://www.ruby-forum.com/t/periods-in-id-causing-apache-routing-error/91850 "2007-04-12T20:48:58Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ianzabel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/b77776/32.png) [@ianzabel](https://www.ruby-forum.com/u/ianzabel)\
**Post date:** [April 12, 2007, 8:48pm UTC](https://www.ruby-forum.com/t/periods-in-id-causing-apache-routing-error/91850/1 "2007-04-12T20:48:58Z")

</div>

Using Rails 1.2 and FastCGI on Apache 1.3.

I’m trying to figure out why a request like this isn’t making it into  
my Rails app: [http://www.domain.com/users/show/a.b.c](http://www.domain.com/users/show/a.b.c)

The user id is “a.b.c”, and because of the periods in there, Apache is  
giving this error:

File not found  
Change this error message for pages not found in public/404.html

If the :id does not have the periods, it’s fine, and the page is  
served by Rails.

I’m not sure where the problem lies… But, here’s my .htaccess  
RewriteRule ^$ index.html [QSA]  
RewriteRule ^([^.]+)$ $1.html [QSA]  
RewriteCond %{REQUEST\_FILENAME} !-f  
RewriteRule ^(.\*)$ dispatch.fcgi [QSA,L]

Is this an Apache config thing, or more of a Rails routing thing?

---

<div class="post-metadata">

**Author:** ![ianzabel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/b77776/32.png) [@ianzabel](https://www.ruby-forum.com/u/ianzabel)\
**Post date:** [April 12, 2007, 11:10pm UTC](https://www.ruby-forum.com/t/periods-in-id-causing-apache-routing-error/91850/2 "2007-04-12T23:10:51Z")

</div>

Ian Z. wrote:

> Using Rails 1.2 and FastCGI on Apache 1.3.
> 
> I’m trying to figure out why a request like this isn’t making it into  
> my Rails app: [http://www.domain.com/users/show/a.b.c](http://www.domain.com/users/show/a.b.c)
> 
> The user id is “a.b.c”, and because of the periods in there, Apache is  
> giving this error:
> 
> File not found  
> Change this error message for pages not found in public/404.html
> 
> If the :id does not have the periods, it’s fine, and the page is  
> served by Rails.
> 
> I’m not sure where the problem lies… But, here’s my .htaccess  
> RewriteRule ^$ index.html [QSA]  
> RewriteRule ^([^.]+)$ $1.html [QSA]  
> RewriteCond %{REQUEST\_FILENAME} !-f  
> RewriteRule ^(.\*)$ dispatch.fcgi [QSA,L]
> 
> Is this an Apache config thing, or more of a Rails routing thing?

It’s a Rails routing thing for sure. The ‘.’ is a param separator. So  
a, b and c are parsed as separate variables in the url. This allows you  
to do stuff like:

/users/bob #=\> :id =\> ‘bob’  
/users/bob.xml #=\> :id =\> ‘bob’, :format =\> ‘xml’

or

/blog #=\> :action =\> ‘index’  
/blog.rss #=\> :action =\> ‘index’, :format =\> ‘rss’

To view the same data in different formats.

To prevent it try this in your routes:

map.foo ‘/users/:id’, :requirements =\> {:id =\> /.\*/}

---

<div class="post-metadata">

**Author:** ![ianzabel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/b77776/32.png) [@ianzabel](https://www.ruby-forum.com/u/ianzabel)\
**Post date:** [April 12, 2007, 11:53pm UTC](https://www.ruby-forum.com/t/periods-in-id-causing-apache-routing-error/91850/3 "2007-04-12T23:53:18Z")

</div>

Ah, that makes sense.

Thanks!

On Apr 12, 5:10 pm, Alex W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
