Работает CentOS 6, Apache.
В моем httpd.conf есть следующее:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName domain1.example
ServerAlias www.domain1.example
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/domain2
ServerName domain2.example
ServerAlias www.domain2.example
</VirtualHost>
Когда бы я ни был domain2.example
(или www.domain2.example
), Мне показывают domain1.example
.
РЕДАКТИРОВАТЬ: Дополнительная информация от httpd.conf
Listen 80
#NameVirtualHost *:80
Вещи, которые я проверил:
domain1.example
и domain2.example
указать на тот же IPЧто мне не хватает?
РЕШЕНИЕ:
Как указывает Патрик, в Apache 2.2 NameVirtualHost
требуется при использовании нескольких VirtualHost
с. Решением здесь было раскомментировать строку в httpd.conf
:
#NameVirtualHost *:80
кому:
NameVirtualHost *:80
Поскольку вы используете только Apache 2.2, вам абсолютно необходимо использовать NameVirtualHost
директива, чтобы Apache знал, что у вас есть несколько веб-сайтов под разными именами, но с одним и тем же IP.
Директива устарела в Apache 2.3, как написано в этой документации: httpd.apache.org/docs/2.4/mod/core.html#namevirtualhost
До версии 2.3.11 NameVirtualHost требовался для указания серверу, что конкретная комбинация IP-адреса и порта может использоваться в качестве виртуального хоста на основе имени. В 2.3.11 и более поздних версиях каждый раз, когда комбинация IP-адреса и порта используется на нескольких виртуальных хостах, для этого адреса автоматически включается виртуальный хостинг на основе имени.
Для вашей версии руководство по настройке виртуального хоста на основе имени находится здесь: http://httpd.apache.org/docs/2.2/vhosts/name-based.html#using
Похоже, это соответствует первому vhost.
Попробуйте что-то вроде этого:
<VirtualHost *:80>
DocumentRoot /var/www/html/domain1
ServerName domain1.com
ServerAlias www.domain1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/domain2
ServerName domain2.com
ServerAlias www.domain2.com
</VirtualHost>