【问题标题】:301 redirect of a group of related paths in Rails 3 routesRails 3路由中一组相关路径的301重定向
【发布时间】:2012-12-20 19:45:00
【问题描述】:

我想设置以/articles 开头的每个路径的永久重定向到以/blog 开头的类似路径。

我知道如何在路由中单独重定向路径,例如

match "/articles/" => redirect("/blog/")

但是,如果我还想重定向 /articles/:id/articles/category/:id 等路径,我也需要对这些路径进行显式重定向。

我希望有一种方法可以一举重定向所有这些路径,无论是现在还是未来。

我意识到我可以使用before_filter 在控制器中相对轻松地做到这一点,但我相信这种行为属于路由,我希望将其保留在那里。

【问题讨论】:

    标签: ruby-on-rails-3 url-routing


    【解决方案1】:
    match '/articles(/*path)' => redirect { |params, req| "/blog/#{params[:path]}" }
    

    【讨论】:

      【解决方案2】:

      编辑

      问题是用参数捕获路由,现在应该解决了

      遵循rails guides,方法应该是:

      match "/articles(/:action(/:id(.:format)))" => redirect {|p, req| "/blog/#{req.subdomain}" }
      

      摘自Redirection

      希望对你有帮助!

      【讨论】:

      • 这些选项似乎都不适合我。第一个正确处理/articles,但不匹配以/articles 开头的其他路径。第二个将/articles重定向到/blog/articles,也不匹配其他以/articles开头的路径
      • 问题是用参数捕获路由,现在应该解决了。如果您有嵌套路线,请告诉我
      • 不,它丢失了路径,我认为是因为没有子域,所以 req.subdomain 评估为空字符串(或 nil?)。结果是/articles/[anything or nothing] 重定向到/users。不过,感谢您的调查。你为我开辟了一些新的调查途径。另一方面,也许这最好在 nginx 中完成......
      • 欢迎!很抱歉无法为您提供帮助! :D
      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 2011-05-10
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多