Это всегда меня беспокоило, и у меня никогда не было времени выяснить, почему Apache делает это, я всегда прибегал к плагину mod_vhost, чтобы обойти эту проблему.
В принципе, у меня есть 2 хоста с поддержкой сайтов (сервер Ubuntu), их содержимое:
<VirtualHost *>
DocumentRoot "/var/www/vhosta.domain.com/"
ServerName vhosta.domain.com
<Directory "/var/www/vhosta.domain.com/">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
И
<VirtualHost *>
DocumentRoot "/var/www/vhostb.domain.com/"
ServerName vhostb.domain.com
<Directory "/var/www/vhostb.domain.com/">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Теперь логически эти 2 будут доступны по отдельности, однако кажется, что все запросы к моему серверу, независимо от того, какие vhosts я определяю поверх этого, будут направляться на vhosta.domain.com.
Я упускаю что-то невероятно очевидное? Я действительно не понимаю, зачем он это делает ...
Спасибо
Перед определениями вашего виртуального хоста вам нужно что-то вроде:
NameVirtualHost *:80
Вы делаете виртуальные хосты на основе имен. Смотрите документацию здесь:
http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost
Вам не хватает NameVirtualhost; тем не мение:
VirtualHost *:80
вместо.Вот правильный способ:
NameVirtualHost *:80
<VirtualHost *:80>
Servername vhosta
</VirtualHost>
<VirtualHost *:80>
Servername vhostb
</VirtualHost>