Mehrere Webseiten oder Webdienste auf einem Server zu betreiben, spart Kosten sowie Administrations- und Wartungsaufwand. Damit der Apache-Dienst Anfragen von verschiedenen Hostnames auf den selben Server und in den korrekten Unterordner leitet, müssen einige Dateien angepasst werden.
Sei hier das exemplarische Ziel, verschiedene Webprojekte unter unterschiedlichen lokalen Adressen verfügbar zu machen:
http://site1.localdomain.de
http://site2.localdomain.de
Anlegen der DNS-Einträge
Zu Testzwecken simulieren wir die Umgebung auf dem localhost, daher muss die Namensauflösung in der hosts
-Datei erfolgen. Im Produktivbetrieb würden die oben genannten Adressen im DNS-Server angelegt und mit der späteren Server-IP verknüpft werden.
- Notepad++ (oder einen belibieger anderer Texteditor) als Administrator öffnen
C:\Windows\System32\drivers\etc\hosts
öffnen- Die Datei am Ende um folgende Einträge ergänzen:
127.0.0.1 site1.localdomain.de
127.0.0.1 site2.localdomain.de
Danach die Änderungen speichern.
Anlegen von VirtualHosts-Einträgen (Apache) mit XAMPP
Angenommen, der Installationspfad von XAMPP lautetC:\xampp
, so befindet sich die Datei httpd-vhosts.conf
im Ordner C:/xampp/apache/conf/extra
. Die Datei enthält standardmäßig ausschließlich auskommentierte Blöcke, in denen eine Beispielkonfiguration eines VirtualHosts beschrieben ist.
An dieser Stelle ist zu prüfen, ob in der Datei httpd.conf
im Ordner C:\xampp\apache\conf
die Zeile
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
einkommentiert bzw. aktiv ist.
Folgender Inhalt muss nun am Ende der Datei hinzugefügt werden:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/site1"
ServerName site1.localdomain.de
ServerAlias site1.localdomain.de
ErrorLog "logs/site1.localdomain.de-error.log"
CustomLog "logs/site1.localdomain.de-access.log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/site2"
ServerName site2.localdomain.de
ServerAlias site2.localdomain.de
ErrorLog "logs/site2.localdomain.de-error.log"
CustomLog "logs/site2.localdomain.de-access.log" common
</VirtualHost>
Dies setzt voraus, dass sich unsere beiden Webprojekte in den Ordnern site1
bzw. site2
befinden.
Neustart des Dienstes
Anschließend muss der Apache-Dienst (z.B. über das XAMPP-Control-Panel) neu gestartet werden.
Die beiden Seiten sind nun unter den eingangs genannten Adressen im Browser erreichbar.
Troubleshooting
Je nach verwendeten CMS kann es beim Aufruf der Seiten zu Problemen kommen.
Generell sollte bei der Verwendung von VirtualHosts auf Rewrite-Befehle in der Datei .htaccess
im Website-Root verzichtet werden. Dies kann zu Endlosschleifen im internen Routing führen.
Folgender Eintrag in der .htaccess-Datei eines Webseiten-Wurzelverzeichnisses ist kritisch zu betrachen:
<IfModule mod_rewrite.c>
# Enable rewrite rules
RewriteEngine on
# Base directory
RewriteBase /subfolder/
</IfModule>
Das führt zu Problemen, weil Apache in einer Endlosschleife versucht, auf den Unterordner zu routen.
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at postmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
Das Auskommentieren des RewriteBase-Befehls genügt, aber es können Anpassungen an anderen Stellen nötig sein.
Bludit: Admin Panel > Einstellungen > Erweitert > Adresse der Website. Hier ist der vollständige DNS-Name (samt Subdomain) einzutragen. Nun werden alle Website-internen Links (CSS, JQuery und Unterseiten) wieder korrekt aufgelöst.
Verwendete Programme
- Windows 10
- XAMPP v 3.2.2
- Notepad++
- Mozilla Firefox