6

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

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

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

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

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

如何使用 routes.rb 来做到这一点?

4

4 回答 4

14

根据@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等。
  • hashrocket 语法(=>) 用于旧的 Ruby,现在在 Ruby 2.0 中我们使用 param: 'value' 语法
于 2014-03-31T11:48:31.520 回答
4

我最终做了这样的事情:

constraints :subdomain => "meow" do   
  match "/" => redirect { |params| "http://www.externalurl.com" }
end
于 2012-12-05T04:41:45.040 回答
1

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

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

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

于 2020-02-17T16:42:42.303 回答
0

我希望这个 railscast 可以帮助:

http://railscasts.com/episodes/221-subdomains-in-rails-3

http://railscasts.com/episodes/123-subdomains

于 2012-12-05T01:30:42.653 回答