![](/img/trans.png)
[英]Display user#show url as www.fb.com/usrname and www.usrname.fb.com instead of showing www.fb.com/123, in rails 4.2.6
[英]how do you make it so that www.site.com/123 or www.site.com/123/some-headline will both lead users to the same place which is 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? 我认为Ruby on Rails中的路由可以做到这一点。 但是除此之外,还有其他方法可以做到这一点。 可以单独由Apache完成吗?
您可以使用Rails路由或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]+/
您只需要结合使用Apache的mod_rewrite和一些正则表达式即可。
尽管它不能完全回答您的问题,但是大多数Rails站点在破折号后加一个斜线,而不是斜线,就像这样:www.site.com/123-my-headline。
您可以通过在模型中创建自己的to_params方法来实现。
由于ruby to_i方法将返回以字符串开头的整数,而忽略以第一个非数字字符开头的所有字符,因此find方法将自动返回第123页,因此无需进行其他工作。
从rails 1.2.6开始,您可以添加两个路由:
map.connect ':id', :controller=>:post,:action=>:show
map.connect ':id/:title', :controller=>:post,:action=>:show
RESTful可能会有所不同
希望对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.