WordPress – Multi-Subdomains installieren
Mein Tatendrang kannte heute keine Grenzen und da habe ich mir einfach mal die Zeit genommen mich dem Thema Multi-Subdomains unter WordPress zu widmen.
Auf der Seite von Open Sourced Brain habe ich den Artikel Multi-(Sub)Domain-WordPress gefunden, der sich genau mit diesem Thema beschäftigt. Er beschreibt dort eine recht interessante Methode mehrere Blogs auf unterschiedlichen Subdomains oder sogar auf verschiedenen Domains mittels einem WordPress-Interface zu verwalten. Ich habe die dort beschriebene 1. Variante gleich einmal für meinen aktuellen Blog und zwei internen Testblogs umgesetzt und beschreibe hier nun kurz meine Erfahrungen zu dem Thema Multi-Subdomains unter WordPress.
Herausforderung
Die Herausforderung bei der Umstellung bestand darin, meinen bestehenden Blog (blog.brandt-net.de) nicht zu “zerstören”.
Deshalb habe ich rein zum Test erst einmal eine komplette parallele Installation zu meinen aktuellen Blog durchgeführt. Dies ist für eine Umstellung eines bestehenden Blogs natürlich nicht zwingend notwendig.
Testinstallation
A) Zuerst habe ich dafür eine neue Instanz von WordPress 2.0.5 in deutsch heruntergeladen und diese vor dem hochladen auf den Server als “Multi-Blog” konfiguriert (siehe unten 1. Anpassen der wp-config.php). Danach die WP-Dateien auf dem Server in ein neues Verzeichnis kopiert. Die Konfiguration der Subdomain muss dann auf dieses Verzeichnis zeigen.
Beispiel: blogtest.brandt-net.de ==> /blogtest
Danach wird durch den Aufruf der Subdomain die normale Installation von WP durchlaufen!
B) Als zweites habe ich dann für einen Testblog eine weiter Subdomain konfiguriert. Diese Subdomain muss auf das gleiche Verzeichnis der WordPress Installation verweisen!
Beispiel: wptest1.brandt-net.de ==> /blogtest
Danach wird durch den Aufruf der 2. Subdomain (wptest1.brandt-net.de) erneut die normale Installation von WP durchlaufen! Im Hintergrund werden dann aber neue Tabellen für den Blog angelegt (konfiguriert vorher in der Datei wp-config.php).
C) So kann man nun viele weiter Blogs für Subdomains anlegen. ich habe dies noch einmal für einen weiteren Testblog durchgeführt. Also erneut für einen Testblog eine weiter Subdomain konfiguriert. Diese Subdomain muss wiederum auf das gleiche Verzeichnis der WordPress Installation verweisen!
Beispiel: wptest2.brandt-net.de ==> /blogtest
Danach wird durch den Aufruf der 3. Subdomain (wptest2.brandt-net.de) erneut die normale Installation von WP durchlaufen! Im Hintergrund werden erneut neue Tabellen für den Blog angelegt.
Umstellung meines Live Blogs “Brandt Aktuell”
Nachdem das Backup erfolgreich durchgeführt wurde habe ich mich an die Arbeit gemacht, die ich hier nun in den einzelnen Schritten beschreibe:
1. Anpassen der wp-config.php
In der Konfigurationsdatei von WordPress habe ich die original variable $table_prefix auskommentiert und die Zeilen 4-6 hinzugefügt. Dies entspricht der Variante 1: eine Domain, multiple Subdomains.
// You can have multiple installations in one database if you give each a unique prefix
//$table_prefix = 'wp_'; // Only numbers, letters, and underscores please!
//table_prfix ersetzt um einen Multi Blog aufzusetzen!
$arrPrefix = explode( ".", $_SERVER["HTTP_HOST"] );
$table_prefix = $arrPrefix[0].'_';
$table_prefix = str_replace( “-”, “_”, $table_prefix );
2. Umbenennen der bestehenden WP-Tabellen
Da meine Blog den Subdomain Namen blog.brandt-net.de verwendet, müssen nun alle originalen WP-Tabellen umbenannt werden für die neue Struktur. Dies ist leider notwendig, da meine bisherigen WP-Tabellen den Prefix wp_ hatten aber mit der neuen Struktur blog_ heißen müssen! Das umbenennen der Tabellennamen habe ich direkt mit myPHPAdmin per Hand durchgeführt.
altesPrefix_WPTABELLENNAMEN ==> neuesPrefix_WPTABELLENNAMEN
Beispiel: wp_tabellen ==> blog_tabellen
3. Update einiger Tabelleninhalte auf die neuen Tabellennamen
Beim Umzug bereits vorhandener Blogs auf diese Multi-Domain-Variante müssen einige Tabelleninhalte, die auf alte Tabellennamen verweisen angepasst werden. Dazu habe ich folgende My-SQL Scripte verwendet:
UPDATE `neuesPrefix_options`
SET `option_name` = "neuesPrefix_user_roles"
WHERE `option_name` = "altesPrefix_user_roles"
UPDATE `neuesPrefix_usermeta`
SET `meta_key` = "neuesPrefix_user_level"
WHERE `meta_key` = "altesPrefix_user_level"
UPDATE `neuesPrefix_usermeta`
SET `meta_key` = "neuesPrefix_capabilities"
WHERE `meta_key` = "altesPrefix_capabilities"
Hinweis: Hat sich noch der Subdomainname geändert, muss noch in der Tabelle options der Eintrag siteurl auf den Namen der neuen URL geändert werden!
4. Test der Plugin Funktionalitäten
Nachdem nun die gröbste Arbeit nun schon erledig war, habe ich noch die Funktionalität der installierten WordPress Plugins getestet auf meinem Blog getestet – alles bestens.
5. Umbiegen der “Test” Subdomains auf das aktuelle Live WP-Verzeichnis
Somit war mein aktueller Blog schon umgestellt.
Nun habe ich noch schnell die vorher installierten Test-Blogs (wptest1.brandt-net.de und wptest2.brandt-net.de) auf das Verzeichnis der aktuellen WP-Instanz umgestellt.
Dazu muss nur die Subdomain Konfiguration auf das Verzeichnis des bestehenden Blogs (hier blog.brandt-net.de) umgebogen werden. So muss die Subdomain Konfiguration beim Provider aussehen:
blog.brandt-net.de ==> /wordpress
wptest1.brandt-net.de ==> /wordpress
wptest1.brandt-net.de ==> /wordpress
Mehr Anpassungen waren dabei nicht notwendig, da die Tabellen schon der Multi-Subdomain Struktur entsprachen. Das war es auch schon. Die Testinstallation von WordPress habe ich dann wieder gelöscht. Fertig.
Fazit
In nur einer Stunde hatte ich meinen kompletten Blog umgestellt und zwei weitere Blogs zum Testen konfiguriert. Alles läuft auf einem WP-Installations-verzeichnis. Plugins und Templates können somit gemeinsam genutzt werden. Die WordPress Tabellen mit den Beiträgen, Kommentaren und was sonst noch alles zu WordPress internen Verwaltung gehört, stehen getrennt für jeden einzelnen Blog zur Verfügung.

Hallo,
irgendwie habe ich das noch nicht so ganz begriffen…
Ich möchte meinem bestehenden Blog 2 Subdomains (Sprachen: en/fr) zufügen. Also , 2 Subs eingerichtet en.domain.de und fr.domain.de, die jeweils auf den Ordner “en” und “fr” im Rootverzeichnis zeigen. Jetzt in jedem Verzeichnis WordPress installieren. Oops,ich hab nur eine DB zur Verfügung, also für jede WordPress Instanz ein anderes Prefix zB. en_ und fr_ , so , jetzt sitz ich da mit 3 Blogs und nun verliessen sie ihn…:-(
Du erläuterst in deinem Bericht die Installation einer ersten “Testinstanz” als Multiblog, später sprichst du dann von den beiden neu installierten Blogs. Fragen über Fragen- deshalb wäre ich für ein detailliertes “Kochrezept” dankbar, falls das nicht zuviel Zeit absorbiert.
Grüße Michael
Hallo Michael,
ich habe den Artikel heute noch einmal etwas überarbeitet und hoffe er ist nun etwas besser zu verstehen.
So wie du dein Problem beschreibst ist es auch nicht richtig! Man benötigt für die hier beschriebene Variante von Multi-Subdomains unter WordPress nur ein WP-Verzeichnis z.B. /wordpress.
Alle Subdomains verweisen dann in Ihrer Konfiguration auf dieses eine Verzeichnis von WordPress! Bei dir also:
blog.domain.de ==> /wordpress
en.domain.de ==> /wordpress
fr.domain.de ==> /wordpress
Im Hintergrund werden dann beim Aufruf der Subdomain durch WP neue Datenbanktabellen angelegt. Dadurch werden die Daten und die Konfiguration der einzelnen Blogs getrennt.
Aber die Blogs benutzen weiter eine WP-Installation und somit auch die gleichen PlugIns und Themes, die für jeden Blog dann unterschiedlich eingebunden werden können!
Das Problem das du wahrscheinlich mit deinem bestehenden Blog haben wirst ist das gleiche wie ich: Du musst die bestehenden Tabellen umbenennen damit Sie zur Struktur passen. Aber den Vorgang habe ich oben beschrieben. Sollte also machbar sein.
Vielleicht ist für dich auch WordPress MU besser zu verwenden (http://mu.wordpress.org/)
Hallo Stefan,
eine großes Dankeschön für deine detaillierte Anleitung. Sobald meine Site fertig ist, werde ich dein Posting verlinken.
Danke und Grüße
Michael
Hallo Stefan, wie schaut es aus wenn ein WordPress -Update ansteht? und wie sieht das mit den Permalink Strukturen aus?
Ansonsten werd ich das auf jedenfall mal ausprobieren
Hallo Tomsn,
bei den einzelnen WordPress-Updates entstehen keinerlei Probleme, da die Daten und evtl. Konfigurationen ja von der Präsentationsschicht getrennt sind.
Wenn die DB bei den Updates geändert werden muss wird nach dem Anmelden an einen bestimmten Blog dies automatisch erkannt und die Updateprozedur von WordPress automatisch aufgerufen.
Die Permalink Struktur Konfiguration ist ebenfalls getrennt konfiguriert und funktioniert immer einwandfrei.
Hallo Stefan,
sorry für die blöde Frage, aber kann ich dann bei den Subdomains auch eigene Themes und Plugins verwenden. Du schreibst, dass sie gemeinsam genutzt werden können – müssen sie aber nicht, oder? Sprich: Ich habe dann verschiedene Themes im Verzeichnis liegen und suche mir für jede Subdomain das entsprechende aus?
Schönen Dank für die Hilfe, Simon
@Simon: Genau richtig. Du kannst jeden Weblog seperat über das Adminmenu konfigurieren, da jeder Weblog seine eigene Datenbanktabellen hat.
Hm,
eigentlich müsst es doch reichen, alle Pfade relativ zu halten und dann per PHP der aufrufenden Domain ein spezielles Theme und CSS (oder eine Variante davon) zuzuweisen, oder?
Dafür gibst doch das Multidomain Plugin das bis unter WP 3 prima funzt.
Hallo Jan, als ich den Artikel ende 2006 geschrieben habe war das aber noch nicht so. Inzwischen kann man sicherich solch ein Blugin benutzen.