Rails路由子域的重定向

时间:2012-12-05 01:27:56

标签: ruby-on-rails routes

我们无法更改服务器配置文件,因此我们需要在rails级别进行重定向。

我对外部网站的路径重定向没有问题,例如:

match "/meow" => redirect("http://meow.com/")

问题在于子域名。我需要重定向,例如:

http://my.example.com => http://example.com

如何使用routes.rb完成此操作?

4 个答案:

答案 0 :(得分:12)

根据@ cfernandezlinux的amazing answer Rails 4 / Ruby 2 语法中的内容相同:

constraints subdomain: "meow" do   
  get "/" => redirect { |params| "http://www.externalurl.com" }
end
    仅在Rails 4.0中不允许在routes.rb中使用
  • match 。您必须明确使用getpost
  • hashrocket语法(=>)适用于旧Ruby,现在在Ruby 2.0中我们使用param:'value'语法

答案 1 :(得分:4)

我最终做了这样的事情:

constraints :subdomain => "meow" do   
  match "/" => redirect { |params| "http://www.externalurl.com" }
end

答案 2 :(得分:1)

如果您不想对URL进行硬编码(例如,可以在本地进行测试/使用),则可以执行以下操作:

  constraints subdomain: 'subdomain_from' do
    get '/' => redirect(subdomain: :new_subdomain, path: '')
  end

所以现在subdomain_from.google.com将重定向到new_subdomain.google.com

答案 3 :(得分:0)