繁体   English   中英

如何使www.site.com/123或www.site.com/123/some-headline都将用户引导到同一地点,即www.site.com/123?

[英]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来实现。

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

使用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和一些正则表达式即可。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM