WordPress Plugin: WP XAMPP Multisite Subdomains
| WordPress Version: | WordPress 3.1 oder höher |
| PHP Version: | PHP 4.4.9 oder höher |
| getestete Browser: | IE7+ | FireFox 2.0.0.16+ | Opera 9.27+ | Safari (Windows) 3.1.2+ | Google Chrome+ |
| nicht unterstützte Browser: | derzeit keine bekannt |

Diese Plugin hab ich hauptsächlich für meine eigenen Tests geschrieben, denn ich wenn ich mal eine Multisite Domain Installation prüfen muß, dann gibt es einige Probleme unter Windows. Windows basierte Systeme mit XAMPP und WordPress können leider nicht mit Wildcard Subdomains operieren, weil Windows schlicht nichts dafür an Board hat.
Also hab ich nach einer Lösung gesucht, wie ich ohne Wildcard Subdomain Unterstützung trotzdem lokal Subdomains benutzen und beliebig anlegen kann.
Vorraussetzungen
Um mit diesem Plugin arbeiten zu können, bedarf es einiger Voraussetzungen. Die Mindestvoraussetzung ist ein bereits installiertes XAMPP für Windows, ich werde hier nicht extra darauf eingehen, wie man das installiert. Dazu gibt es eine Menge Tutorials im Netz.
Eine weitere Voraussetzung ist ein Download der aktuellen WordPress Version (vorzugsweise 3.1.3 oder höher), um später WordPress auch im Apache Server als Multisite installieren zu können.
Schritt 1: Apache mit vhost Konfiguration
Um überhaupt Subdomains mal später hinzubekommen, benötigt man einen virtualen host im Apache Server. Um diesen einzurichten, öffnet man im installierten XAMPP Ordner die Datei in folgendem Unterordner:
- /apache/conf/extra/httpd-vhosts.conf
Dort muß man nun einen neuen vhost konfigurieren. Hier erstmal ein Beispiel dazu:
| XML | |
1 2 3 4 5 6 7 8 9 10 11 12 | <VirtualHost 127.0.0.2:80> ServerAdmin postmaster@dummy-host.localhost DocumentRoot "C:/xampp/__root_wordpress_313_wpmu" ServerName *.wpmu.test ErrorLog "logs/wordpress313_wpmu.localhost-error.log" CustomLog "logs/wordpress313_wpmu.localhost-access.log" combined <Directory "C:/xampp/__root_wordpress_313_wpmu"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Allow from all </Directory> </VirtualHost> |
| timing: 0.001s | |
Standardmäßig verbindet Windows die Auflösung von “http:\\localhost” mit der internen IP Adresse 127.0.0.1, was bekannt sein sollte. Der interne Adresspool ist bedeutend größer als das. Ich werde das jetzt nicht in epischer Breite erläutern sondern vereinfacht weitermachen. Sagen wir mal, man kann die IP Adressen 127.0.0.2 bis 127.0.0.254 ebenfalls benutzen, um im internen (PC lokalen) Netzwerk zu bleiben. Damit kann man theoretisch 252 verschiedene Multisize Installationen hinbekommen, das sollte für die meisten Anwendungsfälle ausreichen.
Ich wähle also die IP 127.0.0.2 und Port 80 (standard HTTP Port) und richte dafür einen virtuelle Host ein. Würde man 127.0.0.1 benutzen, würden die Standarseiten unter localhost für den Apache und MySQL nicht mehr erreichbar sein, die wollen wir aber behalten.
Dem ServerAdmin hab ich eine fiktive E-Mail Adresse verpasst, wer einen lokalen SMTP Mail Server betreibt, kann dort auch eine verwendbare Adresse angeben.
Der Wert von DocumentRoot ist wichtig, denn der hier konfigurierte Ordner muß existieren und wird der Domain Root Ordner für den lokalen Webspace. Ich hab diesen als Unterordner im XAMPP Verzeichnis angelegt.
Der Wert von ServerName ist in Beispiel *.wpmu.test und definiert, wie man später die Multisite Installation im Browser erreichen können soll. Gemäß dem Beispiel sind dann folgenden URL’s zulässig:
- http:\\wpmu.test
- http:\\childblog.wpmu.test
Die Angabe mit dem führenden “*.” ist wichtig, da wir ja später beliebige Subdomains betreiben wollen.
Die Werte von ErrorLog und CustomLog definieren, wo man die enstprechenden error.log und access.log hinhaben möchte und wie die Dateien heißen sollen. Braucht man ab und an, um Fehler prüfen zu können.
Der Directory Abschnitt legt für den Apache fest, wo genau das Document Root Verzeichnis liegt. Die enthaltenen Parameter der Sektion konfigurieren den vhost so, daß man WordPress wie gewohnt und ohne Probleme ausführen lassen kann.
Schritt 2: Anpassung einer Betriebssystem Datei von Windows
Nachdem der vhost eingetragen, die Datei gespeichert wurde und das nötige Verzeichnis angelegt ist, kommen wir nun zu einer Datei von Windows, die festlegt, welche Domain Namen auf welche IP Adressen aufgelöst werden. Mit dieser Datei kann man IP’s vorgeben, wenn eine angefragte Domain das nicht drinsteht, dann fragt Windows die IP Adresse in Internet bei den zugewiesenen DNS Server ab. Windows sucht also immer erst in einer Datei und fragt dann ins Netz. Die Datei findet man normalerweise hier, falls Windows bei euch auf einer andere Festplatte oder Verzeichnis installiert ist, dann bitte berücksichtigen:
- C:/windows/system32/drivers/etc/hosts
Warnung: Diese Datei ist aus gutem Grund schreibgeschützt und ggf. sogar mit Rechten versehen, die es nicht erlauben, sie zu verändern. Wenn man allerdings eine Chance haben will, mit Subdomains zu arbeiten, brauchen wir leider Zugriffs und Schreibrechte für diese Datei. Damit schafft man ggf. ein Sicherheitsrisiko, ich wollte und muß das hier mit erwähnen.
In diese Datei fügen man nun am Ende eine BEGIN/END Sektion an, die mit der IP Adresse übereinstimmt, die wir im vhost angegeben haben:
| Text | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost # BEGIN XAMPP-127.0.0.2 127.0.0.2 wpmu.test # END XAMPP-127.0.0.2 |
| timing: 0.002s | |
Die Sektion mit BEGIN/END ist u.a. wichtig für das Plugin, damit diese automatisch angepasst werden kann ohne den Rest der Datei auch nur zu verändern.
Schritt 3: Apache über XAMPP Control Panel neu starten
Nachdem die Rechte auf diesen Datei angepasst, die Sektion hinzugefügt und gespeichert wurde, müssen wir nun der Apache Server einmal neu starten, damit einerseits der neu eingerichtete vhost aktiviert wird und andererseits Windows dazu gezwungen ist, die hosts Datei neu einzulesen.
Schritt 4: WordPress Dateien auspacken und in den neuen Root Ordner kopieren
Alle Dateien, die im *.zip File von WordPress enthalten sind, werden in den neuen Ordner
- C:/xampp/__root_wordpress_313_wpmu
kopiert, so wie man WordPress auch auf einem Provider-Webspace transferiert. Hier ein Screenshot:

Danach kann man sofort prüfen, ob die bisherige Vorgehensweise geklappt hat, denn die markierte readme.html Datei sollte man direkt aufrufen können mittels “http:\\wpmu.test\readme.html”
Wenn man sie angezeigt bekommt, ist bisher alles ok. Wenn nicht, dann ist ein Fehler in der Schritten vorher passiert und man sollte diese nochmal prüfen.
Schritt 5: WordPress konfigurieren und installieren (als Standard WordPress erstmal)
Ich setze einfach mal voraus, das jeder, der dies hier versuchen will, auch schon WordPress installiert hat. Demzufolge nur in Steno-Stil die Eckdaten:
- in XAMPP MySQL eine neue Datenbank anlegen
- eine dazu passende wp-config.php in den neuen Root Ordner legen
- WordPress Installation aufrufen über http:\\wpmu.test
Danach sollte WordPress normal funktionieren, wie man es von einer Standard Installation her kennt.
Schritt 5: WordPress auf Multisite umstellen
Auch hier verweise ich auf Tutorials im Netz, die beschreiben, wie man aus einer Standard WordPress Installation eine Multisite Installation macht. Wichtig ist dabei aber, dass man nun Subdomains während der Umstellung wählt statt Orderstruktur!
Schritt 6: Plugin installieren, bevor man Subdomain Blogs anlegt!
Das von mir bereitgestellte Plugin ist mein must-use Plugin und gehört demzufolge in den WordPress spezifischen Ordner:
- /wp-content/mu-plugins
Falls es diesen Ordner noch nicht gibt, dann bitte anlegen und den Inhalt meiner Plugin *.zip Datei in diesen Ordner entpacken. Mein Plugin sollte umgehend aktiviert sein, was man im Backend auch prüfen kann. Übrigens hat es in einer Standard Installation überhaupt keine Funktion sondern entfaltet die nur in einer Multisite Installation und wenn diese Subdomains konfiguriert hat.
Finale: Wir sind schon fertig
Wenn das Plugin nun aktiv ist, dann kann man ganz bequem über das Backend von WordPress neue Subdomains anlegen und auch wieder löschen. Das Plugin kümmert sich darum, dass die Windows “hosts” Datei automatisch angepasst wird und die Subdomains umgehend funktionsfähig zur Verfügung stehen. Die Magie passiert ab jetzt.
Eine Installation mit 4 Subdomains sieht bei mit in der “hosts” Datei z.B. dann so aus:
| Text | |
1 2 3 4 5 6 7 | # BEGIN XAMPP-127.0.0.2 127.0.0.2 wpmu.test 127.0.0.2 de.wpmu.test 127.0.0.2 en.wpmu.test 127.0.0.2 nn.wpmu.test 127.0.0.2 zz.wpmu.test # END XAMPP-127.0.0.2 |
| timing: 0.000s | |
Wichtig: Für den Fall, das Windows in einem anderen Ordner installiert ist als hier im Beitrag angegeben und benutzt, dann gibt es eine neue Option im “Site Admin” unter “Settings” am Ende der Seite, wo man den korrekt Pfad und die “hosts” Datei angeben kann. Das Plugin verwendet standardmäßig den im Beitrag benutzen Ordner und Dateinamen als Initialwert.
Zusammenfassung
Wie man sieht, kann man mit ein wenig Nachdenken zu einer Lösung kommen, von der jeder bisher sagte, dass sie nicht möglich ist. Ich habe dieses Plugin bereits seit Monaten im Einsatz und hab lokal mehr als eine Multisite Testinstallation.
Wichtig ist noch zu betonen, dass dieses Plugin nicht für öffentlich gehostete Systeme gedacht ist und auch nicht für lokale Domain-Mappings missbraucht werden kann. Ein Zusammenspiel mit dem Domain-Mapper Plugin wird es zu einem späteren Zeitpunkt vermutlich mal geben, im Moment reicht mir jedoch diese Ausbaustufe.
Download
aktuelle Version: wp-xampp-multisite.zip (291 downloads)
Für Kritik, Fragen oder Anregungen benutzt bitte einfach die Kommentare.
Die volle Kür - Domain Mapping Plugin wird unterstützt
Wenn man schon soweit ist, dass man unter XAMPP für Windows ™ Subdomains unterstützen kann, dann ist der Weg zur Unterstützung von gemappeten Domains auch nicht mehr weit. Also hab ich mir das Plugin WordPress MU Domain Mapping von Donncha O Caoimh angesehen und mein Plugin so angepasst, dass es ebenfalls das Domain Mapping unterstützt.
Gleichzeitig hab ich eine minimal angepasste Version zum Download hier bereitgestellt, die jedoch nur eine deutsche Sprachdatei mitbringt und diese aus dem mu-plugins Ordner mittels der mu-plugins Funktion lädt. Weitergehende Änderungen sind nicht enthalten, mein Plugin läuft auch mit dem Original-Plugin einwandfrei.
Installation des Domain Mapping Plugins
Voraussetzung ist bereits die Installation meines Plugins von oben und der Betrieb von WordPress Multisite mit Subdomains. Wenn diese bereits erfolgreich läuft, müssen wir nun etwas am Browser ändern.
Ich persönlich benutze Firefox für lokale Entwicklungen, also beziehe ich mich vorrangig auf diesen Browser. Firefox hat die Angewohnheit, DNS Anfragen selbst zu cachen anstatt das dem Betriebssystem zu überlassen. Demzufolge macht es ein Domain Mapping unnötig schwer, weil das neue Mapping nicht sofort aufgelöst werden kann.
Um dies zu ändern, muß man Firefox das abgewöhnen.
Dazu öffnet man in Firefox die Seite about:config und fügt nach einem Klick mit der rechten Maustaste einen neuen Integer Wert hinzu:
- network.dnsCacheExpiration
und stellt den Wert 0 ein. Somit muss Firefox ab sofort alle DNS Anfragen an das Betriebssystem stellen und baut keinen eigenen Cache mehr auf.
Kommen wir nun nach diesen Vorbereitungen zur Installation vom Domain Mapping Plugin. Im *.zip Packet (offizielles wie auch meines) sind Dateien gesammelt, die auf spezielle Ordner verteilt werden müssen.
Die Datei “sunrise.php” muß in den Ordner /wp-config/ kopiert werden. Die folgenden Dateien kommen in den durch mein Plugin spätestens existierenden Ordner /wp-content/mu-plugins/:
- domain_mapping.php
- wordpress-mu-domain-mapping.pot
- wordpress-mu-domain-mapping-de_DE.mo
- wordpress-mu-domain-mapping-de_DE.po
Danach muß eine Änderung in der wp-config.php durchgeführt werden. Dort wird unmittelbar nach den Anpassungen für den Multisite Betrieb noch folgendes ergänzt:
| PHP | |
1 2 | /* Domain Mapping mu plugin */ define( 'SUNRISE', 'on' ); |
| timing: 0.027s | |
Damit ist die Installation erledigt und man kann nun zur Konfiguration im Site Admin schreiten.
Konfiguration des Domain Mappings
Um es anschaulicher zu machen, arbeite ich wieder mit Screenshots. In nachfolgenden Bild kann man sehen, wie man die Konfiguration einstellen sollte, damit das Mapping auch sauber auf einer XAMPP Installation mit Unterstützung durch mein Plugin funktioniert:

Im Normalfall sollte bereits die korrekt IP-Adresse eingetragen sein, denn mein Plugin kümmert sich darum. Wenn nicht, dann bitte die IP benutzen, unter welcher die Multisite Installation gerade per vhost konfiguriert wurde. Nach dem Speichern der Einstellungen sollte dem Mapping von Domains nichts mehr im Wege stehen.
Mappen von Domains
Auch hier greife ich wieder auf Bildmaterial zurück. Wichtig für das Mapping von Domains ist, das mit in dem Subdomain Blog angemeldet und aktiv ist. Man wechselt dann in das entsprechende Blog, das eine neue Domain verpasst bekommen soll und stellt diese dort ein.
In meinem Beispiel hab ich erst eine Subdomain heise.wp32.test angelegt, die ich dann auf die Domain www.heise.de mappen möchte. Das ganze sieht dann so aus:

Wenn man gleichzeitig die gemappte Domain zur primären Domain macht, hat man sofort eine lokale URL http://www.heise.de/ auf der lokalen Multisite Installation laufen, die allerdings nun nicht mehr die originale Webseite des Heise Zeitschriften Verlages anzeigen wird sondern den eigenen Sub-Blog Inhalt der Subdomain, die auf diese Domain gemappt wurde.
Wenn man Heise wieder erreichen will, muß man erst die Subdomain wieder zu primären Domain machen und danach die gemappte Domain www.heise.de löschen. Dann sollte der Zeitschriftenverlag wieder erreichbar sein.
Anwendungsfälle
Das Domain Mapping kann man sehr gut dazu gebrauchen, einen Live Blog, den man selbst betreibt, lokal zu testen, als wäre es ein realer Blog im Internet. Das erleicherte in einigen Fällen die Arbeit ungemein und beschleunigt die Weiterentwicklung der eigenen Blogs.
Man könnte allerdings auch so Kundenaufträge präsentieren, die korrekt mit den URL’s und Domains des Kunden laufen, als wären diese live, aber z.B vom Laptop lokal kommen. Gerade für Demozwecke ist dies eine sehr gute Herangehensweise.
Downloads in Summe
aktuelle Version meines Plugins: wp-xampp-multisite.zip (291 downloads)
angepasstes Domain Mapping Plugin: wordpress-mu-domain-mapping.0.5.4-de_de.zip (173 downloads)
originales Domain Mapping Plugin: wordpress.org/extend/plugins/wordpress-mu-domain-mapping






Thomas Scholz
12.06.2011 | 17:35Danke, sehr praktisch!
Kannst du bitte an den Anfang des Plugins folgende vier Zeilen stellen?
Dann stirbt WordPress nicht mit einem fatalen Fehler ob der unbekannten Funktion
, wenn es noch in der Single-Phase ist und das Plugin schon im mu-plugins-Verzeichnis liegt.
Antworten »
codestyling
12.06.2011 | 17:43Ich hab das mal bereinigt und von
umgestellt auf die richtige logische Verknüpfung
Vielen Dank für den Hinweise, so entwicklen sich eben Sachen weiter und perfektoinieren sich.
Antworten »
David Bless
22.06.2011 | 03:17Hi,
i don’t understand a word of German - but i know i need this plugin - why don’t you release it in English and on the wordpress.org site…
I was having so much much problems with sub-directory on localhost xampp and your first set of instructions i did - just by looking at the hosts files and things that made sense in English to me - and now sub-directory locally works PERFECT…
I would love to try sub-domain - can please put even the basic instructions in English? man iknow this will help so many people - you are on a goldmine here boy..
thanks
Antworten »
codestyling
22.06.2011 | 05:54I’m currently working on the english part and description of the plugin. But because of high project pressure I have not enough time to come up with as quick as I would like. But for sure there will be an english translation of the plugin and the related 4 articles about.
Antworten »
Steffen
28.02.2012 | 19:27Hey,
echt, echt, echt super! Dieses Plugin ist genial! Wie lange habe ich leider schon vergeblich versucht, Subdomains unter Windows einzurichten… bis ich endlich auf diese Seite gestoßen bin! Ich werde es definitiv!!! weiterempfehlen : )
Vielen Dank und liebe Grüße,
Steffen
Antworten »
Reinhardt
05.03.2012 | 05:58Hi, ich schlage mich gerade mit XAMPP und WordPress auf XP herum und benötige dringend Dein Plugin, soweit kein Problem…
Was mir aufgefallen ist, ist, dass das Modul domain_mapping.php sich nicht in wp-xampp-multisite.zip befindet. Also benötige ich wahrscheinlich Dein Plugin als auch das wordpress-mu-domain-mapping.0.5.4.2.zip, richtig?
Ich könnte die Übersetzungsarbeiten ins Englische inkl. einer ausführlichen Beschreibung anfertigen, da viele ähnliche Probleme mit XAMPP und MU WP haben.
Bitte auf mein Mail antworten, da ich nicht permanent auf diese Seite gehe…
Antworten »