你是如何做到这一点www.site.com/123或www.site.com/123/some-headline将引导用户到www.site.com/123的同一个地方?

时间:2009-05-15 19:34:29

标签: ruby-on-rails ruby url routing

如何使它成为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 个答案:

答案 0 :(得分:3)

您可以使用rails路由或在Apache中使用mod_rewrite。

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

答案 1 :(得分:2)

使用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]+/

答案 2 :(得分:1)

Apache的mod_rewrite和一些正则表达式的组合应该就是你所需要的。

mod_rewrite

答案 3 :(得分:0)

虽然它没有完全回答你的问题,但是大多数铁路网站使用短划线而不是斜线,就像这样:www.site.com/123-my-headline。

您可以在模型中创建自己的to_params方法。

不需要做更多的工作,因为find方法将自动返回页面#123,因为ruby to_i方法将返回启动字符串的整数并忽略以第一个非数字字符开头的所有字符。

答案 4 :(得分:0)

从rails 1.2.6开始,您可以添加两个路径:

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

RESTful可能会有所不同

希望它可以帮到你