Ruby on rails 3 301在Rails 3路由中重定向一组相关路径
我想将以Ruby on rails 3 301在Rails 3路由中重定向一组相关路径,ruby-on-rails-3,url-routing,Ruby On Rails 3,Url Routing,我想将以/articles开头的每个路径永久重定向到以/blog开头的类似路径 我知道如何在路由中单独重定向路径,例如 匹配“/articles/”=>重定向(“/blog/”) 但是,如果我还想重定向路径,例如/articles/:id和/articles/category/:id等,那么我还需要对这些路径进行显式重定向 我希望有一种方法可以一下子改变所有这些道路的方向,无论是现在还是未来 我意识到我可以在控制器中相对容易地使用before\u filter,但我相信这种行为属于路由,我希
/articles
开头的每个路径永久重定向到以/blog
开头的类似路径
我知道如何在路由中单独重定向路径,例如
匹配“/articles/”=>重定向(“/blog/”)
但是,如果我还想重定向路径,例如/articles/:id
和/articles/category/:id
等,那么我还需要对这些路径进行显式重定向
我希望有一种方法可以一下子改变所有这些道路的方向,无论是现在还是未来
我意识到我可以在控制器中相对容易地使用before\u filter
,但我相信这种行为属于路由,我希望将其保留在路由中。编辑
问题是用参数捕捉路线,现在应该解决了 按照rails指南,操作方法应为:
match "/articles(/:action(/:id(.:format)))" => redirect {|p, req| "/blog/#{req.subdomain}" }
摘自
我希望这对你有帮助 这两种选择似乎都不适合我。第一个路径正确处理
/articles
,但不匹配以/articles
开头的其他路径。第二个将/articles
重定向到/blog/articles
,并且与以/articles
开头的其他路径不匹配。问题是使用参数捕获路由,现在应该解决。如果您有嵌套的路由,请告诉我否,它正在丢失路径,我认为这是因为没有子域,因此req.subdomain
的计算结果为空字符串(或nil?)。结果是/articles/[任何东西或什么都没有]
重定向到/users
。谢谢你的调查。你为我开辟了一些新的调查渠道。另一方面,也许这最好在nginx中完成…欢迎!!很抱歉不能帮你!:D
match '/articles(/*path)' => redirect { |params, req| "/blog/#{params[:path]}" }