我们无法更改服务器配置文件,因此我们需要在 rails 级别进行重定向。
我对到外部站点的路径重定向没有问题,例如:
match "/meow" => redirect("http://meow.com/")
问题在于子域。我需要重定向例如:
http://my.example.com => http://example.com
如何使用 routes.rb 来做到这一点?
我们无法更改服务器配置文件,因此我们需要在 rails 级别进行重定向。
我对到外部站点的路径重定向没有问题,例如:
match "/meow" => redirect("http://meow.com/")
问题在于子域。我需要重定向例如:
http://my.example.com => http://example.com
如何使用 routes.rb 来做到这一点?
根据@cfernandezlinux 的惊人回答,Rails 4/Ruby 2的语法也一样:
constraints subdomain: "meow" do
get "/" => redirect { |params| "http://www.externalurl.com" }
end
match
在 Rails 4.0 中不再允许在 routes.rb 中。您必须明确使用get
,post
等。我最终做了这样的事情:
constraints :subdomain => "meow" do
match "/" => redirect { |params| "http://www.externalurl.com" }
end
如果您不想对 URL 进行硬编码(例如,您可以在本地测试/使用它),您可以执行以下操作:
constraints subdomain: 'subdomain_from' do
get '/' => redirect(subdomain: :new_subdomain, path: '')
end
所以现在subdomain_from.google.com
将重定向到new_subdomain.google.com
.
我希望这个 railscast 可以帮助: