Podczas korzystania z hostów wirtualnych opartych na nazwach, pierwsza załadowana konfiguracja hosta wirtualnego będzie domyślna (Źródło: Apache Wiki ). Na przykład przy konfiguracji poniżej, w przeciwnym razie niedopasowane domeny będą pasować do 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>
Wiele serwerów nie ma monolitycznego pliku konfiguracyjnego, ale kilka plików konfiguracyjnych specyficznych dla hosta jest zorganizowanych w następujący sposób:
/etc/apache2
|-- sites_available (actual configuration files)
`-- sites_enabled (symlinks to files in sites_available)
W takim przypadku, aby najpierw załadować konkretną konfigurację hosta wirtualnego, zmień nazwę dowiązania symbolicznego na coś, co będzie pierwsze podczas sortowania, np 00-default
.
Niektóre inne odpowiedzi nie są całkiem poprawne. Według Wiki Apache, ustawienie ServerName
wirtualnego hosta jest nieprawidłowe. Jeśli host bez a ServerName
nie zostanie załadowany jako pierwszy, Apache może go nigdy nie użyć, ponieważ domyślnie załadowany byłby pierwszy host.
Co więcej, chociaż ServerAlias *
rzeczywiście pasuje do wszystkiego, może również zastąpić inne hosty wirtualne zdefiniowane później. Być może to podejście zadziałałoby, gdyby zawsze był to ostatni wirtualny host, który ma zostać zdefiniowany (jak w konfiguracji podanej w pytaniu), ale oznacza to dodanie nowej dyrektywy i zmianę kolejności sortowania zamiast zmiany kolejności jak wyżej.