2014-01-12 2 views
1

Используя виртуальный хост и псевдоним сервера, я получаю странное перенаправление, которое я не понимаю, откуда оно происходит.Необъяснимое перенаправление с использованием VirtualHosts и ServerAlias ​​

Использование запаса apache2 на Ubuntu 12.04. Только следующие изменения файлов в /etc/apache2/...

Я добавил новый виртуальный хост следующим образом в файле sites-available/foo-com и позволили ему с a2ensite

<VirtualHost *:80> 
    ServerName www.foo.om 
    ServerAlias foo.com 
    ServerAdmin [email protected] 

    DocumentRoot /var/www/www.foo.com 
    <Directory /var/www/www.foo.com/> 
      Options FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 
</VirtualHost> 

У меня также есть второй виртуальный хост для www.bar.com, что именно то же самое, что и выше, но с foo заменен bar

Я изменил виртуального хоста по умолчанию на другой корень документа

DocumentRoot /var/www/default 
    <Directory /var/www/default/> 
    ..... 

Когда я перехожу к http://foo.com, я получаю 301 перенаправление на http://www.foo.com/www.foo.com, который, очевидно, возвращает 404. Еще более странно, переместившись на http://bar.com, мы вернем соответствующий сайт без переадресации.

Я рвал волосы, пытаясь понять это странное поведение. Я проверил, что в apache confs нет перенаправления в другом месте. Ссылка на foo.com отсутствует, кроме виртуального хоста, указанного выше. В корне документов нет файлов .htaccess. Я создал каталог с нуля.

Что еще может быть причиной этого?

+0

Несколько предложений: (1) Установите «LogLevel debug» и проверьте журнал ошибок. (2) 'egrep -ri '(Redirect | RewriteRule)'/etc/apache2', чтобы убедиться, что не существует больше перенаправлений, которые вы не нашли. (3) Включите 'RewriteLogLevel' до 3 или выше и проверьте журнал перезаписи. –

+0

Спасибо. Я уже grep'd каталог для любых экземпляров для перезаписи, нет ничего, кроме DAV, связанных с настройкой «перенаправить-тщательно» из установки по умолчанию, ни одна из них не перенаправляет на URL-адрес. – aviks

+0

Спасибо за другие предложения. В журнале ошибок ничего не появляется. Включение журнала перезаписи показывает, что переписывание происходит, но я не понимаю, почему это нужно. Здесь есть Гист, не могли бы вы взглянуть? https://gist.github.com/aviks/8384895 – aviks

ответ

1

От http://httpd.apache.org/docs/2.2/en/howto/htaccess.html

Далее отметим, что HTTPD должны искать .htaccess файлы во всех каталогов верхнего уровня, для того, чтобы иметь полный набор директив, которые она должна применяться. (См. Раздел о том, как директивы применены ) Таким образом, если файл запрашивается из каталога /WWW/HTDOCS/например, HTTPD должны искать следующие файлы:

/.htaccess
/WWW/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Глядя на ваш журнал переписывания, казалось бы, у вас есть файл .htaccess застрял в/вар/WWW. Удалив его или, предпочтительно, отключив .htaccess, вы должны решить свою проблему.

+0

Да, [gist] (https://gist.github.com/aviks/8384895) ясно показывает это. И так как это влияет только на foo.com, он должен находиться в /var/www/www.foo.com или под ним. –

+0

Спасибо! Да, в каталоге более высокого уровня был .htaccess. Уф! – aviks

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