Подстановочные знаки 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...)

Другие вопросы по тегам