W apache2 z założenia każde żądanie HTTP z nieznanym hostem zostanie przekierowane do pierwszego załadowanego VirtualHost. Czy istnieje sposób na wyłączenie tej funkcji? Innymi słowy, chcę mieć serwer WWW, na którym użytkownik może uzyskać dostęp tylko do jawnie nazwanych definicji VirtualHost. Każda inna nazwa hosta niewymieniona wprost w wierszu ServerName lub ServerAlias powinna zostać po cichu zignorowana.
czy to możliwe?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Aktualizacja: Jak sugerowano poniżej i gdzie indziej, ciche ignorowanie żądania może nie być dobrym pomysłem i może zepsuć RFC dla HTTP. Ponieważ jednak wirtualne hosty są zaprojektowane do symulacji z wieloma oddzielnymi fizycznymi serwerami HTTP, metoda cichego ignorowania nie wydaje mi się nieracjonalna. Byłoby to tak samo, jak wirtualny hosting oparty na protokole IP i zapora ogniowa niektórych adresów IP (być może nie dla wszystkich klientów).
źródło
RewriteRule . - [F]
Oto alternatywny sposób, który nie wymaga przepisywania reguł:
źródło
<VirtualHost>
musi zatem zostać zdefiniowane najpierw w konfiguracji serwera. Dokładnie, który plik musi się znaleźć, zależy od konfiguracji. (Jednak problem z „przekierowanymi subdomenami” może być problemem niepowiązanym.)to zadziałało dla mnie
zamień xxxx na rzeczywisty ipv4 i ipv6
zastąp myactualservername.com rzeczywistą witryną obsługiwaną przez maszynę
Używam wirtualnego hosta opartego na nazwie.
kredyt za to rozwiązanie trafia na
https://serverfault.com/a/82309/459796
źródło