Periods in :id causing Apache routing error

Skip to first unread message

Ian Zabel

Apr 12, 2007, 2:48:15 PM4/12/07
to Ruby on Rails: Talk
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:

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?

Alex Wayne

Apr 12, 2007, 5:10:51 PM4/12/07

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'


/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: '/users/:id', :requirements => {:id => /.*/}

Posted via

Ian Zabel

Apr 12, 2007, 5:48:50 PM4/12/07
to Ruby on Rails: Talk
Ah, that makes sense.


On Apr 12, 5:10 pm, Alex Wayne <>

Reply all
Reply to author
0 new messages