Zurzeit bin ich damit beschäftigt, all meine WordPress-Installationen zu einer WordPress µ Installation zu fusionieren. Zunächst klappt das auch ganz gut, nur die Übernahme von Top-Level-Domains ist nicht ganz so einfach. Einzelnen Blogs einzelne Domains zuzuordnen ist zwar mit dem (o.g.) Domain Mapping Plugin problemlos möglich, allerings können keine Adressen mit dem Subdomain-Zusatz WWW eingerichtet werden. Also habe ich mich auf die Suche nach einer Lösung gemacht, die ich letztendlich im englischsprachigen Support gefunden habe.
Der Benutzer ‘cvladan’ stellt eine Lösung vor, bei der er kleine Änderungen an den Dateien des Plugins vornimmt:
Die domain_mapping.php ändert er in Zeile 55 von
$wpdb->escape( preg_replace( "/^www\./", "", $_POST[ 'domain' ] ) );
in:
$wpdb->escape( $_POST[ 'domain' ] );
außerdem für die Anpassung im Backend in Zeile 112 von:
echo "http://www.<input type='text' name='domain' value='' />/";
in:
echo "http://<input type='text' name='domain' value='' />/";
Des weiteren nimmt er eine Änderung in der sunrise.php vor:
$wpdb->escape( preg_replace( "/^www\./", "", $_SERVER[ 'HTTP_HOST' ] ) );
wird in Zeile 10 geändert in:
$wpdb->escape( $_SERVER[ 'HTTP_HOST' ] );
Nun besteht die Möglichkeit, im Administrationsmenü des Plugins (Werkzeuge -> Domain Mapping) auch Subdomains hinzuzufügen.
Um die Domain also mit www anzeigen zu lassen, muss die evt. schon vorhandene Einstellung der Domain ohne www gelöscht werden und die Domain mit www hinzugefügt werden.
SEO-Optimierung vornehmen
Auf die erste Freude, dass der Blog nun mit WWW aufgerufen werden kann, folgt jedoch schnell wiede eine Ernüchterung, denn nun steht ein neues Problem im Raum: Wie gehe ich mit Seitenaufrufen um, die ohne das WWW getätigt werden. Etwa von alten Verweisen von anderen Websites oder allgemein wenn jemand den Artikel ohne WWW aufruft? Die Domain ohne WWW einfach direkt auf die mit WWW umzuleiten ist nicht suchmaschinenfreundlich, da es dann nicht zu einer 301-Weiterleitung kommt. Also habe ich mir folgende Lösung überlegt:
Legen Sie unter dem Hauptverzeichnis Ihrer WordPress-Installation einfach einen Ordner namens 301 an (also auf der selben Ebene mit wp-content, wp-admin usw.). Dort speichern Sie eine index.php mit folgendem Inhalt ab:
<?php
$domain = $_SERVER["SERVER_NAME"];
$pfad = $_SERVER['REQUEST_URI'];
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.$domain$pfad");
exit();
?>
Als nächstes verlinken Sie die Domain ohne WWW auf dieses Verzeichnis. Die Domain wird die index.php aufrufen und alle Anfragen suchmaschinenfreundlich per 301-Redirect auf die Adresse mit WWW umleiten.
Dies können Sie bei allen Domains ohne WWW machen, deren Blogs auch mit WWW aufrufbar sein sollen, denn die Datei liest automatisch aus, welche Domain gerade aufgerufen wurde.
Also …
www.example.com verweist auf das Hauptverzeichnis der WPMU-Installation,
example.com verweist auf den Ordner 301 unter dem Verzeichnis der WPMU-Installation