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