2013-04-07 2 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 с Пассажиром.

ответ

2

Вы должны удалить скобки и ? из RewriteCond, чтобы читать, как это

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

Вместо этого я бы воспользовался камнем rack-canonical-host.

Добавить 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] 
Смежные вопросы