Подстановочные знаки ServerName в виртуальных хостах на основе имен Apache?
В нашей локальной сети я установил несколько "поддельных" 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
2 ответа
Использование ServerAlias
, скорее, чем ServerName
в одиночестве:
ServerName somename.dev
ServerAlias *.dev
Если это может помочь, просто завершу ответ Мо:
Подстановочные знаки в ServerAlias также работают с частичными доменными именами, такими как
ServerName somename.dev
ServerAlias *-mysite.dev
Это недавно спасло мне жизнь ^^ (основной сайт с поддоменами для каждого дополнительного приложения, например: admin-somename.dev
, bo-somename.dev
, api-somename.dev
...)