Beim Zugriff auf die Dateien des lokalen Servers gibt man normalerweise http://localhost/[Unterordner] ein. Ich habe lange nach einer Lösung gesucht, um auf einem Windows-Apache-Server eine Subdomain zu erstellten: http://[Unterordner].localhost/. Auch andere Domainnamen sind möglich. Hier beschreibe ich, wie es geht.
Einige Informationen vorweg: Ich benutze das Paket XAMPP für die lokale Testumgebung. Mein Rootverzeichnis für den Server liegt auf C:\xampp\htdocs\. Gebe ich in der Adresszeile http://localhost/shiftedwork/ ein, so werden die Daten aus C:\xampp\htdocs\shiftedwork geladen. Mein Ziel ist es, mit der Eingabe von http://local.shiftedwork.de/ auf meinem lokalen Ordner (…\htdocs\shiftedwork) zu landen.
Schritt 1 – Windows Hosts-Datei konfigurieren
Als erstes müssen wir Windows mitteilen, dass wir bei der Eingabe von local.shiftedwork.de auf die lokale Testumgebung weitergeleitet werden. Dazu müssen wir die hosts-Datei konfigurieren. Diese befindet sich bei fast allen Windows-Versionen in dem Verzeichnis C:\windows\System32\drivers\etc\. Die Datei “hosts” hat keine Dateiendung, kann aber problemlos mit einem Texteditor geöffnet werden (Nein, Microsoft Word ist kein Texteditor..). Mißachtet die ersten Kommentarzeilen (diese fangen mit der Raute ‘#’ an) und schaut auf den ersten Eintrag. Dort steht
127.0.0.1 localhost
Diesen Eintrag sollte man so stehen lassen – er bedeutet, dass bei der Eingabe der Domain “localhost” auf die IP-Adresse 127.0.0.1 umgeleitet wird – das ist (meistens) die Adresse für die lokale Apache-Testumgebung. Analog dazu erstellen wir nun einen weiteren Eintrag in einer neuen Zeile. Diese beginnt mit der lokalen IP-Adresse der Testumgebung, dann eine Leerzeile und dann den Namen der Domain, die wir später eingeben möchten um umgeleitet zu werden. Für mein Vorhaben sieht die hosts-Datei nun (abgesehen von den Kommentaren am Anfang) nun so aus:
127.0.0.1 localhost 127.0.0.1 local.shiftedwork.de
Speichert die Datei wieder ab und startet das Betriebssystem neu.
Schritt 2: Apache konfigurieren
Jetzt müssen wir noch den Apache-Server so konfigurieren, dass bei der Verarbeitung der Domain auf den richtigen Ordner umgeleitet wird. Das Zauberwort hierfür heisst vhosts (Virtual Hosts). Zunächst sollte man erst einmal nachschauen, ob die vhosts-Erweiterung geladen wird. Geht dazu in das Verzeichnis eurer Apache-Installation (Bei xampp lautet dieser C:\xampplite\apache) und wechselt von dort in den Ordner conf. Dort befindet sich die Datei “httpd.conf”, die auch mit einem Texteditor öffnet. Sucht nun einen Abschnitt, in dem am Anfang vieler Zeilen “LoadModule” oder “#LoadModule” steht. Auch hier bedeutet eine Raute vor einem Eintrag wieder, dass es auskommentiert wurde. Sucht nun die Zeile
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
und entfernt ggf. die Raute am Anfang, um diese Zeile in einen gültigen Eintrag zu verwandeln.
Sucht nun, fast am Ende der Datei, die Zeile
# Virtual hosts Include "conf/extra/httpd-vhosts.conf"
und achtet darauf, dass der Include-Befehl nicht auskommentiert ist.
Speichert die Datei ab und wendet euch wieder dem Ordner zu, in dem die httpd.conf-Datei liegt. In diesem Ordner befindet sich ein Ordner namens “extra” (Vollständiger Pfad bei einer Standard-xampp-Installation: C:\xampplite\apache\conf\extra). Wechselt in diesen Ordner und öffnet die Datei httpd-vhosts.conf mit einem Texteditor.
Wieder sehen wir am Anfang viele Kommentarzeilen, so dass wir fast übersehen dass dort eine Zeile ist in der “NameVirtualHost *:80″ steht. Entfernt die Raute am Anfang der Zeile, um aus dem Kommentar einen Eintrag zu machen. Im unteren Teil seht ihr schon eine Beispielkonfiguration, diese könnt ihr entfernen und nach folgendem Schema neue virtuelle Hosts hinzuzufügen:
<VirtualHost *:80> ServerAdmin [EMail-Adresse des Admins] DocumentRoot [Absoluter Pfad zum gewünschten Verzeichnis] ServerName [URI des Browsers (die auch in der hosts-Datei steht)] <Directory "[Absoluter Pfad zum gewünschten Verzeichnis]"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Meine Hosts-Datei sieht nun so aus:
# # Use name-based virtual hosting. # NameVirtualHost *:80 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerAdmin info@shiftedwork.de DocumentRoot C:/xampp/htdocs/shiftedwork ServerName local.shiftedwork.de <Directory "C:/xampp/htdocs/shiftedwork"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin info@localhost DocumentRoot C:/xampp/htdocs/ ServerName localhost <Directory "C:/xampp/htdocs/"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Es gibt bei den Einträgen einiges zu beachten: Wichtig ist, dass der letzte Block immer auf das allgemeine htdocs-Verzeichnis zeigt. Ansonsten werden alle Anfragen zu eurem neuen virtuellem Host umgeleitet. Außerdem habe ich die Erfahrung gemacht, dass Apache Probleme macht wenn man bei der Verzeichnisangabe den Backslash (“\”) als Ordnertrenner nutzt. Benutzt hier nur den normalen Slash. Achtet auch darauf, dass jede Pfadangabe mit einem Slash endet.
Speichert die Datei wieder ab und startet Apache neu. Jetzt solltet ihr ohne Probleme eure neue Subdomain erreichen können.



Danke für den Beitrag,
weiß noch wie lang und aussichtslos der Kampf für mich erschien, als ich das zum ersten Mal umsetzte.
Umso unbezahlbarer das Lächeln und die Vorteile nachdem es geschafft war : )
Posts wie diese hätten definitiv geholfen ;)
Es hat echt alles reibungslos geklapt!
Ich hab so lange nach einem guten tutorial über das gesucht, was du hier in einfachen worten erklärst.
DAUMEN HOCH!!
ist zwar schon eine ganze Weile her der Beitrag, aber er hat geholfen. Dankeschön!