Periods in :id causing Apache routing error

4 просмотра
Перейти к первому непрочитанному сообщению

Ian Zabel

не прочитано,
12 апр. 2007 г., 14:48:1512.04.2007
– 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: 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?

Alex Wayne

не прочитано,
12 апр. 2007 г., 17:10:5112.04.2007
– rubyonra...@googlegroups.com

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 => /.*/}

--
Posted via http://www.ruby-forum.com/.

Ian Zabel

не прочитано,
12 апр. 2007 г., 17:48:5012.04.2007
– Ruby on Rails: Talk
Ah, that makes sense.

Thanks!

On Apr 12, 5:10 pm, Alex Wayne <rails-mailing-l...@andreas-s.net>
wrote:

Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений