Я часами борюсь с этой странной проблемой. Я думаю, у меня все файлы в порядке и все должно работать, но это не так. у меня есть
Это должны быть два разных веб-сайта.
Это мои файлы конфигурации (Ubuntu 10.04):
apache2.conf:
Include /etc/apache2/sites-enabled/
Include /opt/subdomain.conf
ports.conf:
NameVirtualHost 123.123.123.123:80
Listen 80
/ etc / apache2 / sites-enabled / 000-default:
<VirtualHost 123.123.123.123:80>
DocumentRoot /home/landing/www
<Directory /home/landing/www>
Options None
AllowOverride None
</Directory>
</VirtualHost>
-> НЕ указывать ServerName. Ловит запросы на IP и действительно открывает / home / Landing / www
/ и т. д. / apache2 / с поддержкой сайтов / домен1:
<VirtualHost 123.123.123.123:80>
ServerName domain1.com
DocumentRoot /home/domain1/www
ServerAlias www.domain1.com
<Directory /home/domain1/www>
Options None +FollowSymLinks
Order Allow,Deny
Allow from All
</Directory>
</VirtualHost>
-> Это для основного сайта. Открывается нормально, также с www.domain.com
/opt/subdomain.conf:
<VirtualHost 123.123.123.123:80>
ServerName subdomain.domain1.com
DocumentRoot "/opt/subdomain/www"
</VirtualHost>
-> Вот в чем проблема. Это НЕ открывается. Вместо этого открывается / home / Landing / www ...? Это происходит, когда я открываю ЛЮБОЙ поддомен, поэтому вся эта конфигурация игнорируется. Кто-нибудь знает, почему? Или как проверить ??
Насколько я понимаю, это связано с тем, что ServerName не используется в вашем первом VirtualHost.
Вы не можете смешивать виртуальный хостинг на основе имени и безымянного виртуального хостинга в apache, это чертовски сбивает с толку, apache сделает «все возможное», чтобы сопоставить домен, следуя порядку конфигурации.
Рекомендуемый способ сделать виртуальный хост по умолчанию - по-прежнему иметь в нем ServerName (как и должно быть), но изменить строку VirtualHost с
<VirtualHost 123.123.123.123:80>
DocumentRoot /home/landing/www
к этому
<VirtualHost _default_:80>
DocumentRoot /home/landing/www
ServerName blablabla