WordPress Network „Multisite“ erstellen

Auf einem Server der mehr als nur eine Website mit WordPress erhalten soll, lohnt sich eventuell die Überlegung ein sogenanntes „WordPress Network“,a uch „Multisite Installation“ genannt, einzurichten. Dies bedeutet, dass man nur ein WordPress System installiert und verschiedene Seiten (und auch verschiedene Domains, falls gewünscht und sofern man es richtig konfiguriert) auf einer einzigen zentralen WordPress-Instanz laufen lassen kann.

Eine solche, zentrale WordPress-Installation hat den Vorteil dass man nur ein System aktualisieren und pflegen muss, außerdem frisst es weniger Performance, den großen Nachteil allerdings, dass man sich wirklich darum kümmern muss das Grundsystem, aber auch Plugins aktuell und schadfrei zu halten, denn ist eine Website infiziert, sind vermutlich auch all die anderen, installierten Seiten infiziert, als brav aufpassen 🙂

So, wie folgt geht man vor (bei einem WordPress 3.8 System), wir starten lokal auf dem eigenen Rechner, nicht direkt auf dem Server, aber wie Ihr wollt:

1.) Die Grundeinstellungen
Wir würden eine komplett neue, zentrale Installation empfehlen, nicht das ummünzen einer bestehenden Installation, aus dem einfachen Grund, dass dann (fast nichts) schief gehen kann, also, zuerst WordPress installieren und folgendes in der wp-config.php anpassen:
a) die MySQL Einstellungen einrichten
b) den „SALT“ Sicherheitsschlüssel (https://api.wordpress.org/secret-key/1.1/salt/) an entsprechender Stelle installieren
c) den Datenbanktabellen-Präfix ändern (muss man, nicht, schadet aber auch nicht und macht es automatisierten Hacks zumindest etwas schwerer)
z.B. in: $table_prefix = ’networkwp_‘;

2.) Die erste „Network“/“Multisite“ Einstellung
Vor der Zeile „/* That’s all, stop editing! Happy blogging. */“ folgendes eintragen:

/* Multisite */
define(‚WP_ALLOW_MULTISITE‘, true);

Bei WordPress 3.8 sieht das in der wp-config dann wie folgt aus:

define(‚WP_DEBUG‘, false);

/* Multisite */
define(‚WP_ALLOW_MULTISITE‘, true);
/* That’s all, stop editing! Happy blogging. */

3.) Network Subdomain und spezieller Server-Ordner
ggf. eine Subdomain einrichten und einen speziellen Ordner auf dem Server erstellen, in welchen Ihr das WordPress-System hinaufladet, z.B.
Domain: eure.sub.domain
Ordner auf dem Server: /network

4.) Upload des WordPress Systems
Da wir ja lokal auf unserem Client-Rechner gearbeitet haben, müssen wir nun das WordPress System in den erstellten Ordner hochladen, entweder per FTP, SFTP oder SCP, je nachdem wie Ihr Zugriff darauf habt.

5.) Die Installation ausführen
Im Browser startet Ihr nun die WordPress Installation, wie gewohnt …/wp-admin, in unserem Beispiel

http://eure.sub.domain/wp-admin

Im Browser startet nun die bekannte WordPress-Istallations-Routine, siehe Screenshot, z.B. wie folgt (nicht übernehmen, nur ein Beispiel):

Blogtitel: WordPress Network Installation (oder wie auch immer diese Netzwerk-Seite genannt werden soll, kann auch später noch geändert werden)
Benutzername: NetworkAdmin (nie nur „admin“, macht es auch zumindest etwas schwieriger für automatisierte hacks Eurer Installation)
Passwort: Uj-82LkX4 (oder etwas ähnlich kompliziertes, oder noch komplizierter 🙂
Deine E-Mail-Adresse: network@eure.sub.domain
Privatsphäre: Häckchen vorerst entfernen, machen wir lieber separat, also Seite NICHT indizieren lassen (sofern sich Suchmaschinen daran halten)

6.) Erfolgreiche Installation
Nach erfolgreicher Installation loggt Ihr Euch ein und bekommt den Willkommensbildschirm zu sehen (die wir erst einmal über den „Optionen“-Button ob rechts etwas aufräumen). Außerdem – und das unterscheidet nun bereits eine normale WordPress-Installation von einer „Network“-Installation – erscheint unter dem „Werkzeuge“-Link in der linken Navigationsspalte (im engl. „Tools“)ein neuer Navigationspunkt: „Install Network“, bzw. „Netzwerk einrichten“ wenn Ihr WP auf deutsch installiert habt.

7. Netzwerk einrichten
Natürlich klickt Ihr auf den „Netzwerk einrichten“ Link und befindet Euch dann in folgendem Pfad: /wp-admin/network.php
Diese Seite erfordet eine wichtige Entscheidung von Euch. Wollt‘ Ihr die verschiedenen Seiten in Subfoldern oder mit sub-domains (bei uns also sub-sub-domains) laufen lassen – die Subdomain-Variante hängt von Eurem Provider ab, und ob dieser ermöglicht dass Subdomains automatisch per Webinterface erstellt werden können. Bei den meisten Webhostern macht die (sub-)sub-domain-Variante leider Probleme, weshalb wir die Folder-Variante empfehlen, zumindest wenn Ihr sicher gehen wollt.

Bestätigt Eure Entscheidung, erscheint ein neuer Screen:

8.) wp-config.php und -htaccess, Network-Einstellungen vornehmen
Diese neue Seite macht nochmals Änderungen in Eurem System nötig, und zwar in der wp-config-Datei, wie die Seite ausführlich beschreibt:

define(‚MULTISITE‘, true);
define(‚SUBDOMAIN_INSTALL‘, false);
define(‚DOMAIN_CURRENT_SITE‘, ‚Eure.Sub.Domain‘);
define(‚PATH_CURRENT_SITE‘, ‚/‘);
define(‚SITE_ID_CURRENT_SITE‘, 1);
define(‚BLOG_ID_CURRENT_SITE‘, 1);

Sowie die folgenden Änderungen in der .htacess-Datei ergänzen, bwz., falls noch nicht vorhanden, entsprechend anlegen:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

# END WordPress

Beide Dateien aktuallisert hochladen, ggf. falls Ihr 100% sicher gehen wollt, habt Ihr zuvor ein Backup der Dateien erstellt.

9.) Netzwerk erfolgreich eingerichtet? Testen.
Sobald die Datei auf dem Server sind, müsst Ihr Euch bei jeder folgenden Aktion, neu einloggen. Nach dem Re-Login seht Ihr den Punkt „Meine Seiten“, ganz oben links in der Top-Navigation und darunter auch den Punkt „Netzwerkverwaltung“ – Ihr habt das Netzwerk erfolgreich eingerichtet, gratuliere.

10.) Domain Mapping installieren
Tja, leider war das noch nicht alles, um es rund laufen zu lassen:
Um andere Domain auf der Network-Installation zu konfigurieren, braucht Ihr das „Domain Mapping“ Plugin.
Wichtig: Ihr müsst dies in der „Netzwerkverwaltung“ installieren UND aktivieren! Und zwar „Für alle Seiten aktivieren“! Ansonsten aktiviert Ihr Plugins eigentlich nur für einzelne Seite.
Nur wenn Ihr das Plugin aktiviert habt erscheint unter dem Punkt „Einstellungen“ auf der Übersite „Netzwerkverwaltung“ folgendes:
Einstellungen -> Domain Mapping
Einstellungen -> Domains

11.) Sunrise.php
a)
In der wp-config muss nun leider noch etwas geändert bzw. hinzugefügt werden:

/* WP MU Plugin http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/installation/ */
define( ‚SUNRISE‘, ‚on‘ );

/* That’s all, stop editing! Happy blogging. */

b)
Weiterhin muss die sunrise.php aus dem Verzeichnis des Plugins in die wp-content geschoben werden

Nazulesen im Detail auch hier.

12.) Domain Mapping Configuration
Tja, dieser Punkt ist etwas knifflig, je nach Provider, am meisten Erfolg hatten wir mit der Einstellung, die ersten vier Punkte auszuwählen (wie im Screenshot gezeigt) und die Serverdomain einzutragen.

13. Domain einrichten
a) bei Eurem Provider muss die Domain auf den passenden Ordner einsgellt/konfiguriert werden – derseleb Ordner in welchem sich Eure WordPress-Network Installation befindet.

b) Anschliessend müsst Ihr die Domain in der „Netzwerkverwaltung“ in WordPress vornehmen:

b1) Seite einrichten
Seiten -> Hinzufügen
/wp-admin/network/site-new.php

b2) Domain für das Domain-Mapping konfigurieren
Einstellungen -> Domains
/wp-admin/network/settings.php?page=dm_domains_admin

GRATULIERE!

That’s it, jetzt solltet Ihr in der Auswahl unter „Meine Seiten“ auch die neue Site finden, Happy Blogging and a Very Happy New Year too! 🙂

Wichtig: Beim Kopieren der Texte/Sourcecodes scheinen die einfachen Anführungszeichen je nach Editor falsch kopiert zu werden, dies muß man ggf. manuell nachbessern!
„Strato“ Special: Also bei Strato läuft immer alles anders als sonst 🙁
Die .htaccess sieht dabei wie folgt aus:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

# END WordPress

Bei den Domain Options wiederum ist nur 2., 3. und 4. ausgewält nicht 1. und 5. – don’t ask why, das ist Strato….