При использовании виртуальных хостов на основе имен первая загруженная конфигурация виртуального хоста будет использоваться по умолчанию (Источник: Apache Wiki ). Например, с конфигурацией ниже, в противном случае несопоставленные домены будут соответствовать domain-one.com
:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain-one.com
# Other options and directives ..
</VirtualHost>
<VirtualHost *:80>
ServerName domain-two.com
# Other options and directives ..
</VirtualHost>
Многие серверы не имеют монолитного файла конфигурации, но имеют несколько специфичных для хоста файлов конфигурации, организованных следующим образом:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
В этом случае, чтобы сначала загрузить конкретную конфигурацию виртуального хоста, переименуйте символическую ссылку во что-то, что будет первым при сортировке, например 00-default
.
Некоторые из других ответов не совсем верны. Согласно Apache Wiki, не указывать ServerName
на виртуальном хосте неверно. Если хост без a ServerName
не загружается первым, Apache может даже никогда не использовать его, поскольку первый загруженный хост будет использоваться по умолчанию.
Кроме того, хотя ServerAlias *
он действительно будет соответствовать чему-либо, он также может переопределять другие виртуальные хосты, определенные позже. Может быть, этот подход будет работать, если он всегда будет определяться последним виртуальным хостом (как в конфигурации, указанной в вопросе), но это означает добавление новой директивы и изменение порядка сортировки, а не просто изменение порядка, как указано выше.