Quando si utilizzano host virtuali basati sul nome, la prima configurazione dell'host virtuale caricata sarà quella predefinita (Fonte: Apache Wiki ). Ad esempio, con la configurazione seguente, i domini non corrispondenti corrisponderanno 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>
Molti server non hanno un file di configurazione monolitico, ma hanno diversi file di configurazione specifici dell'host organizzati come segue:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
In questo caso, per caricare prima una particolare configurazione dell'host virtuale, rinominare il collegamento simbolico in qualcosa che sarà il primo quando verrà ordinato, come 00-default
.
Alcune delle altre risposte non sono del tutto corrette. Secondo Apache Wiki, non impostare un ServerName
in un host virtuale non è corretto. Se l'host senza a ServerName
non viene caricato per primo, Apache potrebbe non usarlo nemmeno, poiché il primo host caricato sarebbe l'impostazione predefinita.
Inoltre, sebbene ServerAlias *
corrisponda effettivamente a qualsiasi cosa, può anche sostituire altri host virtuali definiti in seguito. Forse questo approccio funzionerebbe se fosse sempre l' ultimo host virtuale a essere definito (come nella configurazione fornita nella domanda), ma questo significa aggiungere una nuova direttiva e cambiare l'ordinamento invece di cambiare semplicemente l'ordine come sopra.