2014-01-13 2 views
1

Примечание: Я видел другие вопросы/ответы для перенаправления www-> non-www. Это больше, чтобы знать, почему это не работаетПереадресованный цикл при удалении www in с RewriteEngine

Так что я VirtualHost файл, который выглядит примерно так

<VirtualHost *:80> 
    ServerName domain.com 
    ServerAlias www.domain.com 
    ... 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} www.(.+) [NC] 
    RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R=301] 
    ... 
</VirtualHost> 

Но когда я пытаюсь это я получаю цикл перенаправления. Я ничего не вижу, говоря мне , что перенаправляется в журналы доступа.

Я подозреваю, что он держит ошибочно собирается www.domain.com вместо к domain.com, хотя я уверен, что это должно быть правильно ...

ответ

1

Попробуйте это правило:

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

Возможно, вы попали в цикл из-за использования переменной %{SERVER_NAME}.

+0

Я не ссылаюсь на это правильно? В соответствии с этим это кажется правильным http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond –

+0

Да, я знаю, что документ тоже, но, вероятно, '% {SERVER_NAME}' получает значение 'www. domain.com'. Вы попробовали это предложенное правило? – anubhava

+0

Это сработало! Я помечаю это как ответ позже, хотя я просто хочу посмотреть, есть ли у кого-нибудь еще мысли о том, почему переменная была установлена ​​неправильно –

Смежные вопросы