Al usar hosts virtuales basados en nombres, la primera configuración de host virtual cargada será la predeterminada (Fuente: Apache Wiki ). Por ejemplo, con la configuración a continuación, de lo contrario, los dominios no coincidentes coincidirán con 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>
Muchos servidores no tienen un archivo de configuración monolítico, pero tienen varios archivos de configuración específicos del host organizados de la siguiente manera:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
En este caso, para hacer que una configuración particular de host virtual se cargue primero, cambie el nombre del enlace simbólico a algo que será primero cuando se ordene, como 00-default
.
Algunas de las otras respuestas no son del todo correctas. Según el Wiki de Apache, no establecer un ServerName
en un host virtual es incorrecto. Si el host sin a ServerName
no se carga primero, Apache nunca puede usarlo, ya que el primer host cargado sería el predeterminado.
Además, si bien ServerAlias *
coincidirá con cualquier cosa, también puede anular otros hosts virtuales definidos más adelante. Tal vez este enfoque funcionaría si siempre es el último host virtual que se definió (como en la configuración dada en la pregunta), pero esto significa agregar una nueva directiva y cambiar el orden de clasificación en lugar de simplemente cambiar el orden como se indicó anteriormente.