Как сделать так, чтобы www.site.com/123 или www.site.com/123/some-headline приводили пользователей в одно и то же место, а именно www.site.com/123? - PullRequest
0 голосов
/ 15 мая 2009

как сделать так, чтобы www.site.com/123 или www.site.com/123/some-headline www.site.com/123/anything-at-all приводили пользователей в то же место такое www.site.com/123? Я думаю, что маршрутизация в Ruby on Rails может сделать это. Но кроме этого, какие другие методы могут сделать это. это может сделать только Apache?

Ответы [ 5 ]

3 голосов
/ 15 мая 2009

Вы можете сделать это с маршрутизацией рельсов или с mod_rewrite в Apache.

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

2 голосов
/ 15 мая 2009

Использование Mod Rewrite:

RewriteEngine ON 
RewriteRule ^([0-9]+)/*$ /$1 [R=301,L]

Использование rout.rb

map.connect ':my_id/:headline', :controller => 'controller_name', 
            :action => 'action_name', :my_id => /[0-9]+/
1 голос
/ 15 мая 2009

Комбинация mod_rewrite и некоторого регулярного выражения в Apache - все, что вам нужно.

mod_rewrite

0 голосов
/ 17 мая 2009

Начиная с рельсов 1.2.6, вы можете добавить оба маршрута:

map.connect ':id', :controller=>:post,:action=>:show
map.connect ':id/:title', :controller=>:post,:action=>:show

RESTful вещь может варьироваться

Надеюсь, это поможет вам

0 голосов
/ 16 мая 2009

Хотя это не дает точного ответа на ваш вопрос, большинство сайтов рельсов используют слаг после тире, а не слэша, вот так: www.site.com/123-my-headline.

Вы делаете это, создавая собственный метод to_params в модели.

Больше не нужно выполнять никаких действий, поскольку метод find автоматически возвращает страницу # 123, поскольку метод ruby ​​to_i возвращает целое число, начинающее строку, и игнорирует все символы, начиная с первого нецифрового символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...