2013-04-07 89 views
0

我有一個Rails應用程序,我已經在應用程序中的公用文件夾把這個代碼在.htaccess文件:如何將非www請求重定向到www?

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

,但仍非www不是重定向到www和Chrome的話說:無限循環。我究竟做錯了什麼?我正在使用Apache與Passenger。

回答

2

你應該從RewriteCond刪除括號和?,閱讀這樣

RewriteCond %{HTTP_HOST} ^example\.com [NC] 
5

我想用rack-canonical-host gem代替。

添加gem 'rack-canonical-host'Gemfile,運行bundle並添加到您的config.ru,只是開頭的行run前:

use Rack::CanonicalHost, 'example.com' 
2

您可以嘗試以下重寫條件和規則:

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

其實,你的情況表達是這樣的:

RewriteCond %{HTTP_HOST} ^example\.com [NC,OR] 
RewriteCond %{HTTP_HOST}^[NC]