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]}" }