我有一个 Rails 应用程序,我已将此代码放在应用程序公用文件夹中的 .htaccess 文件中:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example\.com)? [NC]
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
但是非 www 仍然没有重定向到 www 并且 Chrome 说:无限循环。我究竟做错了什么?我正在将 Apache 与乘客一起使用。
我有一个 Rails 应用程序,我已将此代码放在应用程序公用文件夹中的 .htaccess 文件中:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example\.com)? [NC]
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
但是非 www 仍然没有重定向到 www 并且 Chrome 说:无限循环。我究竟做错了什么?我正在将 Apache 与乘客一起使用。
我会改用rack-canonical-host gem。
添加gem 'rack-canonical-host'
到您的Gemfile
,运行bundle
并将其添加到您的config.ru
,就在以 开头的行之前run
:
use Rack::CanonicalHost, 'example.com'
您可以尝试这些重写条件和规则:
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L]
实际上,您的条件表达式是这样的:
RewriteCond %{HTTP_HOST} ^example\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^ [NC]
你应该删除括号和?
from RewriteCond
, 像这样阅读
RewriteCond %{HTTP_HOST} ^example\.com [NC]