Der Besuch meiner Website example.com
funktioniert also wie vorgesehen. Ich habe erfolgreich eine Weiterleitung konfiguriert, die abc.example.com
zu weiterleitet example.com/abc
.
Die Konfigurationsdatei sieht folgendermaßen aus abc.example.com.conf
:
<VirtualHost *:80>
ServerName abc.example.com
RedirectPermanent / https://example.com/abc
</VirtualHost>
Mein Problem:
Wenn ich meine Website besuche und die rohe IP-Adresse in den Browser eingebe, werde ich ebenfalls zu weitergeleitet, example.com/abc
was nicht das gewünschte Verhalten ist. Die rohe IP im Browser sollte mich beiexample.com
Hier ist die example.com.conf
Datei:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Was muss ich ändern, damit beim Eintippen meine IP-Adresse example.com
statt bereitgestellt wird abc.example.com
?
Antwort1
Dies liegt daran, dass einer Ihrer virtuellen Hosts als Standard fungiert. Wenn der ServerName
auf Serverebene (also nicht in einem VirtualHost
Block) mit einem innerhalb eines übereinstimmt VirtualHost
, wird dies der Standard sein. Wenn keiner festgelegt ist, ist dies normalerweise der erste virtuelle Host.
Angenommen, Sie verwenden eine reine Vhost-Konfiguration, dann besteht die Antwort darin, ServerName example.com
(und das entsprechende Listen
) außerhalb des Vhost-Blocks festzulegen.
Referenz:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
Hauptmoderator geht
Alle Anfragen, die nicht mit einer bestehenden übereinstimmen, werden von der globalen Serverkonfiguration verarbeitet, unabhängig vom Hostnamen oder Servernamen.
Wenn Sie einem vorhandenen Server einen namensbasierten virtuellen Host hinzufügen und die Argumente des virtuellen Hosts mit bereits vorhandenen IP- und Portkombinationen übereinstimmen, werden Anfragen nun von einem expliziten virtuellen Host verarbeitet. In diesem Fall ist es normalerweise ratsam, einen standardmäßigen virtuellen Host mit einem Servernamen zu erstellen, der mit dem des Basisservers übereinstimmt. Neue Domänen mit derselben Schnittstelle und demselben Port, die jedoch separate Konfigurationen erfordern, können dann als nachfolgende (nicht standardmäßige) virtuelle Hosts hinzugefügt werden.