Как вы делаете это так, чтобы 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?, как вы это сделаете, чтобы www.site.com/123 или www.site.com/123/some-headline оба приведут пользователей к тому же месту, что и www.site.com/123?
ответ
Вы можете сделать это с помощью маршрутизации рельсов или с помощью mod_rewrite в Apache.
Сочетание mod_rewrite Apache и некоторые регулярное выражение должно быть все, что вам нужно.
Использование Mod Rewrite:
RewriteEngine ON
RewriteRule ^([0-9]+)/*$ /$1 [R=301,L]
Использование routes.rb
map.connect ':my_id/:headline', :controller => 'controller_name',
:action => 'action_name', :my_id => /[0-9]+/
Хотя это не отвечает именно ваш вопрос, большинство сайтов используют рельсы слизняка после тире, а чем косая черта, вот так: www.site.com/123-my-headline.
Вы делаете это, создавая свой собственный метод to_params в модели.
Не нужно выполнять больше работы, потому что метод find автоматически вернет страницу # 123, так как метод ruby to_i вернет целое число, которое запустит строку и игнорирует все символы, начиная с первого нечислового символа.
По рельсам 1.2.6 вы можете добавить оба маршрута:
map.connect ':id', :controller=>:post,:action=>:show
map.connect ':id/:title', :controller=>:post,:action=>:show
RESTful вещь может варьироваться
Надеются, что это помогает вам