Ruby on rails 什么';使用rails应用强制域名的最佳方式是什么?ex:example.com而不是www.example.com

Ruby on rails 什么';使用rails应用强制域名的最佳方式是什么?ex:example.com而不是www.example.com,ruby-on-rails,apache,Ruby On Rails,Apache,当我的rails应用程序在www.example.com上应答时,它似乎坏了,它以前只在example.com上工作得很好……但是我最近移动了服务器,想知道重定向所有www.example.com请求的最佳方法 谢谢。这取决于您的服务器设置,有不同的方法。一种方法是,您可以将DNS中的www命名为根域。如果您在Apache后面运行Rails,那么您可以使用mod_rewrite在Apache中运行它。如果您使用mongrel(或webbrick)将网络请求直接导入Rails,那么您可能需要配置这

当我的rails应用程序在www.example.com上应答时,它似乎坏了,它以前只在example.com上工作得很好……但是我最近移动了服务器,想知道重定向所有www.example.com请求的最佳方法


谢谢。

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

希望有帮助


adricnet

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

希望有帮助

adricnet

根据默认设置,第一个虚拟主机是默认主机。我使用此选项使第一个条目成为一个包罗万象的条目,它将每个“未定义”的请求重定向到主站点:

# 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>
#默认全包
#请注意缺少服务器名
重写规则^(.*)$http://www.example.com$1[重定向=永久]
#网站1-www.example.com
服务器名www.example.com
[站点配置的其余部分]
为了获得额外的积分,您可以设置通配符DNS条目,以便将每个未定义的主机(例如asdfasdfas.example.com)重定向到www.example.com。

根据默认设置,第一个虚拟主机是默认主机。我使用此选项使第一个条目成为一个包罗万象的条目,它将每个“未定义”的请求重定向到主站点:

# 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>
#默认全包
#请注意缺少服务器名
重写规则^(.*)$http://www.example.com$1[重定向=永久]
#网站1-www.example.com
服务器名www.example.com
[站点配置的其余部分]

为了获得额外的积分,您可以设置一个通配符DNS条目,以便将每个未定义的主机(例如asdfasdfas.example.com)重定向到www.example.com。

假设您启用了mod_rewrite,这应该可以实现

    RewriteEngine on

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

假设您启用了mod_rewrite,那么这应该可以实现

    RewriteEngine on

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

你可能不想听,但我建议改为修复断裂的部分。你已经在应用程序的某个地方硬编码了你的域,可能是在你的路由中,但是如果没有错误的详细信息,你是不可能知道的,你需要删除它,这样你或其他维护人员以后就不必再处理它了。

你可能不想听到它,但我建议改为修复哪些中断。你已经在应用程序的某个地方硬编码了你的域,可能是在你的路由中,但是如果没有错误的详细信息,就不可能知道,你需要删除它,这样你或者其他维护人员以后就不必再处理它了