In Apache2 wird jede http-Anforderung mit einem unbekannten Host per Design an den ersten geladenen VirtualHost weitergeleitet. Gibt es eine Möglichkeit, diese Funktion zu deaktivieren? Anders gesagt, ich möchte einen Webserver haben, auf dem der Benutzer möglicherweise nur explizit benannte VirtualHost-Definitionen erhält. Jeder andere Hostname, der nicht explizit in einer ServerName- oder ServerAlias-Zeile erwähnt wird, sollte stillschweigend ignoriert werden.
Ist das möglich?
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>
Update: Wie unten und anderswo vorgeschlagen, ist es möglicherweise keine gute Idee, eine Anfrage stillschweigend zu ignorieren, und möglicherweise werden die RFCs für HTTP beschädigt. Da virtuelle Hosts so konzipiert sind, dass sie mehrere separate physische HTTP-Server simulieren, erscheint mir der Ansatz des stillen Ignorierens nicht unangemessen. Dies entspricht dem IP-basierten virtuellen Hosting und dem Firewalling einiger IPs (möglicherweise nicht für alle Clients).
quelle
RewriteRule . - [F]
Hier ist eine alternative Methode, bei der keine Umschreiberegeln erforderlich sind:
quelle
<VirtualHost>
muss daher zuerst in der Serverkonfiguration definiert werden. Welche Datei sich genau befinden muss, hängt von Ihrer Konfiguration ab. (Ihr Problem mit "umgeleiteten Subdomains" könnte jedoch ein nicht verwandtes Problem sein.)das hat bei mir funktioniert
Ersetzen Sie xxxx durch Ihr aktuelles ipv4 und ipv6.
Ersetzen Sie myactualservername.com durch eine tatsächliche Website, die vom Computer bereitgestellt wird
Ich verwende einen namenbasierten virtuellen Host.
Die Gutschrift für diese Lösung geht an
/server//a/82309/459796
quelle