Rails路由:重定向通配符路由

时间:2016-07-21 16:36:01

标签: ruby-on-rails ruby ruby-on-rails-4 rails-routing

我有一个用Ruby on Rails构建的网站和一个用WordPress构建的博客。主网站的网址为example.com,博客的网址为blog.example.com。由于搜索引擎索引网站的方式以及目录博客的偏好而不是子域博客,我希望实现永久重定向,以便example.com/blog/anything将重定向到blog.example.com/anything,无论有多少斜线或url包含的参数。因此,即使example.com/blog/a/b/c/d/e?google=true也应该重定向到blog.example.com/a/b/c/d/e?google=true

到目前为止,如果博客之后只有一个目录,则以下内容有效:

  get '/blog/:what', to: redirect('http://blog.codeundercover.com/%{what}')

但是,无论/blog之后的文字是什么,我都需要这样做。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的路线未使用通配符路线。相反,它是Rails Routing Guide所指的Static Segment

您希望改为使用Wildcard Globbing

get '/blog/*what', to: redirect('http://blog.codeundercover.com/%{what}'), constraints: { what: /.*/ }

答案 1 :(得分:0)

get "/blog(/*what)", to: redirect("http://blog.codeundercover.com/%{what}")