Подстановочные знаки ServerName в виртуальных хостах на основе имен Apache?


16

В нашей локальной сети я установил несколько «поддельных» 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

Ответы:


40

Используйте ServerAlias, а не в ServerNameодиночку:

ServerName somename.dev

ServerAlias *.dev


2
В последних версиях apache больше не разрешено использовать подстановочные знаки в ServerName, и в результате ошибки вы должны использовать ServerAlias.
Квентин Скоусен

Потрясающие. Это было быстро и точно. Деф сэкономил мне время. Благодарю.
Арт Гайгель

4

Если это может помочь, просто завершу ответ Мо:

Подстановочные знаки в ServerAlias ​​также работают с частичными доменными именами, такими как

ServerName somename.dev

ServerAlias *-mysite.dev

Это спасло мою жизнь в последнее время ^^ (основной сайт с поддоменов для каждого суб приложения , такие как admin-somename.dev, bo-somename.dev, api-somename.dev...)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.