0

我有一个 Rails 应用程序,我已将此代码放在应用程序公用文件夹中的 .htaccess 文件中:

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

但是非 www 仍然没有重定向到 www 并且 Chrome 说:无限循环。我究竟做错了什么?我正在将 Apache 与乘客一起使用。

4

3 回答 3

5

我会改用rack-canonical-host gem。

添加gem 'rack-canonical-host'到您的Gemfile,运行bundle并将其添加到您的config.ru,就在以 开头的行之前run

use Rack::CanonicalHost, 'example.com'
于 2013-04-07T13:44:14.227 回答
2

您可以尝试这些重写条件和规则:

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

实际上,您的条件表达式是这样的:

RewriteCond %{HTTP_HOST} ^example\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^ [NC]
于 2013-04-07T14:10:36.630 回答
2

你应该删除括号和?from RewriteCond, 像这样阅读

RewriteCond %{HTTP_HOST} ^example\.com [NC]
于 2013-04-07T14:11:08.867 回答