Я пытаюсь понять разницу между следующими двумя терминами:
*:80
_default_:80
в файле конфигурации Apache. Документация Вот мне непонятно, и единственный разговор в списке рассылки, который я смог найти Вот также не проливает (понятного для меня) света по этому поводу.
У меня есть несколько виртуальных хостов на основе имен, объявленных так:
<VirtualHost *:80>
ServerName example.com
...
и я хотел бы иметь запись, которая запускается, когда ни один из них не соответствует, т.е. когда запрос приходит без имени виртуального хоста или с именем виртуального хоста, которое не было объявлено. Должен ли я использовать *:80
или _default_:80
?
я так думаю _default_
используется для определения виртуального хоста по умолчанию в конфигурации виртуального хоста на основе IP. Вы используете виртуальный хостинг на основе имени, поэтому это утверждение в документации
По умолчанию виртуальный хост никогда не обслуживает запрос, который был отправлен на адрес / порт, который используется для виртуальных хостов на основе имен.
становится актуальным.
В конфигурации виртуального хоста на основе имени первый определенный виртуальный хост является виртуальным хостом по умолчанию, и он будет обслуживаться, если не будет найдено другого совпадения, поэтому вы можете сделать что-то простое, например
<VirtualHost *:80>
ServerName default
DocumentRoot /var/www/default
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com
</VirtualHost>
<VirtualHost *:80>
ServerName sub.example.com
DocumentRoot /var/www/sub.example.com
</VirtualHost>
Будет делать то, что вы хотите, и обслуживать все, кроме example.com и sub.example.com по умолчанию.