我有大约10个域名指向我的Heroku应用程序(它花了很长时间来确定网站的名称 - 不要问),所有这些都是我在不同时间给不同的人。
现在我决定使用域名(称之为“example.com”),我希望现有的域名都能正常工作,但要重定向到example.com。最好的方法是什么?
这是我的方法(在application_controller.rb
中):
before_filter :ensure_domain
def ensure_domain
canonical_domain = 'example.com'
if request.env['HTTP_HOST'] != domain && ENV["RAILS_ENV"] == 'production'
redirect_to request.protocol + canonical_domain + request.env["REQUEST_URI"]
end
end
这是正确的方法吗?
答案 0 :(得分:3)
其实我是在Apache中做的:
<VirtualHost ...>
ServerName example.com
.... # your real server config
</VirtualHost>
<VirtualHost ...>
ServerName olddomain.com
ServerAlias other-olddomain.com yetanotherone.com
Redirect permanent / http://example.com/
</VirtualHost>
请注意,重定向网址上的尾部斜杠非常重要。不会将来自http://olddomain.com/foo/bar?foo=bar的任何内容重定向到http://example.com/foo/bar?foo=bar
答案 1 :(得分:0)
我认为保持Rails应用程序中的逻辑更容易管理(另外我不知道如何配置Apache)。我结束了这个:
before_filter :ensure_domain
def ensure_domain
canonical_domain = 'example.com'
if request.host != canonical_domain && ENV["RAILS_ENV"] == 'production'
redirect_to request.protocol + canonical_domain + request.request_uri
end
end