Ruby on rails 您如何使www.site.com/123或www.site.com/123/some-headline将用户引导到同一个地方,即www.site.com/123?
您如何使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来完成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来完成
您可以使用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
宁静的事物可能会有所不同
希望对你有帮助