Ao usar hosts virtuais baseados em nome, a primeira configuração de host virtual carregada será o padrão (Fonte: Wiki do Apache ). Por exemplo, com a configuração abaixo, os domínios não correspondentes corresponderão a 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>
Muitos servidores não possuem um arquivo de configuração monolítico, mas possuem vários arquivos de configuração específicos do host, organizados da seguinte maneira:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
Nesse caso, para fazer com que uma configuração específica de host virtual seja carregada primeiro, renomeie o link simbólico para algo que será o primeiro quando classificado, como 00-default
.
Algumas das outras respostas não estão totalmente corretas. De acordo com o Apache Wiki, não definir a ServerName
em um host virtual está incorreto. Se o host sem um ServerName
não for carregado primeiro, o Apache nem poderá usá-lo, pois o primeiro host carregado será o padrão.
Além disso, embora de ServerAlias *
fato corresponda a qualquer coisa, também pode substituir outros hosts virtuais definidos posteriormente. Talvez essa abordagem funcione se for sempre o último host virtual a ser definido (como na configuração fornecida na pergunta), mas isso significa adicionar uma nova diretiva e alterar a ordem de classificação em vez de apenas alterar a ordem como acima.