代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

如何才能使www.site.com/123或www.site.com/123/some-headline都能引导用户到达与www.site.com/123相同的地方?

  •  0
  • nonopolarity  · 技术社区  · 15 年前

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

    5 回复  |  直到 15 年前
        1
  •  3
  •   Corban Brook    15 年前

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

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

        2
  •  2
  •   adnan.    15 年前

    使用mod rewrite:

    RewriteEngine ON 
    RewriteRule ^([0-9]+)/*$ /$1 [R=301,L]
    

    使用例程RB

    map.connect ':my_id/:headline', :controller => 'controller_name', 
                :action => 'action_name', :my_id => /[0-9]+/
    
        3
  •  1
  •   turkeyburger    15 年前

    Apache的mod_rewrite和一些regex的组合应该是您所需要的。

    mod_rewrite

        4
  •  0
  •   allesklar    15 年前

    虽然它并不能准确回答您的问题,但是大多数Rails站点使用短划线后的一个段塞而不是斜线,就像这样:www.site.com/123-my-headline。

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

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

        5
  •  0
  •   Oinak    15 年前

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

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

    休息的事情可能会有所不同

    希望它能帮助你