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 ServerNameem um host virtual está incorreto. Se o host sem um ServerNamenã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.