2013-08-25 2 views
1

Я пытаюсь настроить мой сайт на использование только www, а не-www должен быть постоянно перенаправлен на www. This answer предложил использовать два виртуальных хоста, однако это заставляет меня перейти в цикл перенаправления.Конфигурация Apache2, вызывающая цикл перенаправления

Вот конфигурация для сайта:

<VirtualHost *:80> 
    ServerName www.mydomain.com 

    DirectoryIndex index.html index.php 
    DocumentRoot /home/me/sites/mydomain.com/htdocs 

    # Log file locations 
    LogLevel warn 
    ErrorLog /home/me/sites/mydomain.com/logs/error.log 
    CustomLog /home/me/sites/mydomain.com/logs/access.log combined 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName mydomain.com 
    Redirect permanent/http://www.mydomain.com/ 
</VirtualHost> 

Когда я посещаю версию без WWW сайта успешно перенаправляет версию WWW, однако Chrome, то мне подсказывает, что существует цикл перенаправления.

Сначала я думал, что это может быть .htaccess в моем документе root, но после удаления этого файла все еще происходит. Это просто простой сайт Wordpress.

Может ли кто-нибудь увидеть что-то не так с конфигурацией, которая может вызвать это? Если нет, как я могу сузить дело?

ответ

1

Вам не нужна отдельная запись VirtualHost для не-www и вместо этого используйте ServerAlias. Также для перенаправления на www просто используйте правило, подобное этому:

<VirtualHost *:80> 
    ServerName www.mydomain.com 
    ServerAlias mydomain.com 
    DirectoryIndex index.html index.php 
    DocumentRoot /home/me/sites/mydomain.com/htdocs 

    # Log file locations 
    LogLevel warn 
    ErrorLog /home/me/sites/mydomain.com/logs/error.log 
    CustomLog /home/me/sites/mydomain.com/logs/access.log combined 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

</VirtualHost> 
Смежные вопросы