Ruby on rails 您如何使www.site.com/123或www.site.com/123/some-headline将用户引导到同一个地方,即www.site.com/123?

Ruby on rails 您如何使www.site.com/123或www.site.com/123/some-headline将用户引导到同一个地方,即www.site.com/123?,ruby-on-rails,ruby,url,routing,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?我认为RubyonRails中的路由可以做到这一点。但除此之外,还有什么其他方法可以做到这一点呢。它可以由Apache单独完成吗?您可以使用rails路由或Apache中的mod_rewrite来完成 您可以使用rails路由或Apache中的mod_rewrite来完成

您如何使www.site.com/123或www.site.com/123/some-headline www.site.com/123/anything-at-all将用户引导到同一个地方,即www.site.com/123?我认为RubyonRails中的路由可以做到这一点。但除此之外,还有什么其他方法可以做到这一点呢。它可以由Apache单独完成吗?

您可以使用rails路由或Apache中的mod_rewrite来完成


您可以使用rails路由或Apache中的mod_rewrite来完成


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


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

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

虽然它不能完全回答您的问题,但大多数rails站点在破折号后使用slug,而不是斜杠,如下所示:www.site.com/123-my-headline

您可以通过在模型中创建自己的to_params方法来实现这一点


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

尽管它不能准确回答您的问题,大多数rails站点在破折号后使用slug,而不是斜杠,如下所示:www.site.com/123-my-headline

您可以通过在模型中创建自己的to_params方法来实现这一点


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

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

map.connect ':id', :controller=>:post,:action=>:show
map.connect ':id/:title', :controller=>:post,:action=>:show
宁静的事物可能会有所不同


希望它能帮助您

从rails 1.2.6开始,您可以添加两条路线:

map.connect ':id', :controller=>:post,:action=>:show
map.connect ':id/:title', :controller=>:post,:action=>:show
宁静的事物可能会有所不同

希望对你有帮助