Что здесь не так?
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain1.com
ServerAdmin membersupport@domain1.com
DocumentRoot /var/www/html/domain1-com
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
ServerAlias www.domain2.com
ServerAdmin hello@domain2.com
DocumentRoot /var/www/html/domain2-com
</VirtualHost>
Проблема:
domain1.com
правильно обслуживает контент на /var/www/html/domain1-com
, но domain2.com
также обслуживает контент на /var/www/html/domain1-com
.
Вот результат httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain1.com (/etc/httpd/conf/extra/httpd-vhosts.conf:21)
port 80 namevhost domain1.com (/etc/httpd/conf/extra/httpd-vhosts.conf:21)
port 80 namevhost domain2.com (/etc/httpd/conf/extra/httpd-vhosts.conf:27)
Syntax OK
Это apache версии 2.2.22.
Заранее спасибо.
ОБНОВЛЕНО - Основываясь на ответах ниже, я обновил свой файл conf и вопрос. К сожалению, проблема все еще существует. (Я только добавил _default_
как часть моей попытки решить проблему самостоятельно, прежде чем задавать вопрос.)
При настройке виртуальных хостов на основе имен шаблон IP: PORT, который вы даете директиве NameVirtualHost, должен быть точно таким же, как тот, который вы даете каждому из ваших виртуальных хостов.
Итак, ваша конфигурация должна быть:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain1.com
DocumentRoot /var/www/html/domain1-com
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/html/domain2-com
</VirtualHost>
Вы не используете и не должны использовать _default_
. В дефолт Шаблон IP используется в конфигурациях виртуального хоста на основе IP, чтобы указать, какой хост используется, когда запрос поступает на IP, на котором не настроен виртуальный хост. Здесь это не то, что вам нужно. Смешивание виртуальных хостов на основе IP и имен является сложным и может привести к неожиданным результатам ...
Для виртуальных хостов на основе имен существует также хост по умолчанию, с которого обслуживаются все запросы, не совпадающие с именем сервера в одном из блоков виртуальных хостов, но он всегда является первым.
+ Изменить NameVirtualHost *:80
к NameVirtualHost *
Дело в том, что с подстановочным знаком и портом apache будет точно соответствовать списку виртуальных хостов.