让所有用户进入同一个域的最佳方式?

时间:2009-10-03 23:42:39

标签: ruby-on-rails

我有大约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

这是正确的方法吗?

2 个答案:

答案 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