В нашей локальной сети я установил несколько «поддельных» TLD на DNS-сервере, чтобы использовать их для виртуального хостинга на основе имен Apache. Я хотел бы объединить это с массовым виртуальным хостингом (то есть VirtualDocumentRoot) на сервере Ubuntu 10.04 LAMP.
Тем не менее, я не могу выбрать правильный vhost!
Вот краткое изложение конфигурации Apache:
NameVirtualHost 10.10.0.205
<VirtualHost 10.10.0.205>
ServerName *.test
VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>
<VirtualHost 10.10.0.205>
ServerName *.dev
VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>
Имя хоста, такое как www.domain.com.dev , правильно разрешается до 10.10.0.205, но всегда выбирает верхний хост, а не нижний, который более точно соответствует.
У меня сложилось впечатление, что Apache сначала попытается сопоставить имя_сервера, а затем по умолчанию использовать верхний хост для данного IP-адреса. Что я делаю неправильно? Или это невозможно, и я должен использовать другой IP для каждого TLD?
выходы apachectl -S (урезанные):
10.10.0.205:* is a NameVirtualHost
default server *.test
port * namevhost *.test
port * namevhost *.dev
источник
Если это может помочь, просто завершу ответ Мо:
Подстановочные знаки в ServerAlias также работают с частичными доменными именами, такими как
ServerName somename.dev
ServerAlias *-mysite.dev
Это спасло мою жизнь в последнее время ^^ (основной сайт с поддоменов для каждого суб приложения , такие как
admin-somename.dev
,bo-somename.dev
,api-somename.dev
...)источник