什么是强制使用rails应用程序的域名的最佳方法?例如:example.com而不是www.example.com

时间:2009-05-29 18:13:26

标签: ruby-on-rails apache

我的rails应用程序似乎在它在www.example.com上回答时破了,它以前只用example.com工作正常...但是我最近移动了服务器并且想知道重定向所有服务器的最佳方法www.example.com要求转到http://example.com/.../

感谢。

4 个答案:

答案 0 :(得分:1)

假设您启用了mod_rewrite

,这应该可以解决问题
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^www.example\.com
    RewriteRule ^(.*)$ http://example.com$1 [R=301,L]

答案 1 :(得分:0)

这取决于您的服务器设置,有不同的方法。您可以通过DNS将DNS命名为DNS到根域,以一种方式。如果您在Apache后面运行Rails,那么您可以使用mod_rewrite在Apache中执行它。如果您使用例如mongrel(或webbrick)直接将网络请求带入Rails,那么您可能必须配置这些服务器,或者可能必须使用Rails路由?

希望有所帮助,

adricnet

答案 2 :(得分:0)

根据Apache's name-based virtual host documentation,第一个虚拟主机是默认主机。我使用它来使第一个条目成为一个全能,将每个“未定义”请求重定向到主站点:

# Default catch-all
<VirtualHost *:80>
    # Note the lack of a ServerName
    RewriteRule ^(.*)$ http://www.example.com$1 [redirect=permanent]
</VirtualHost>

# Site 1 - www.example.com
<VirtualHost *:80>
    ServerName www.example.com

  [ the rest of the site config ]

</VirtualHost>

要获得额外的功劳,您可以设置通配符DNS条目,以便将每个未定义的主机(例如asdfasdfasdfas.example.com)重定向到www.example.com。

答案 3 :(得分:0)

你可能不想听,但我建议修理一下。你已经在你的应用程序中的某个地方对你的域进行了硬编码,可能在你的路由中,但是如果没有错误的具体信息就无法判断,你需要删除它,这样你或其他维护者就不会将来必须再次处理它。