Frisch notiert!
Die neusten Artikel aus unserem Blog.

WordPress mit mehr als nur einer URL betreiben

von Adrian Lambertz / Zuletzt aktualisiert vor 1 Woche / Netzwelt / Server & Technik / Wordpress / 0
Standardmässig "lauscht" WordPress auf eine einzige URL - nämlich die, die in den Einstellungen als Seiten-URL festgelegt ist. Einer unsere Kunden stellte neulich die Anfrage, dass seine WordPress Seite auf zwei unterschiedlichen URLs erreichbar sein sollte ohne, dass die Adresszeile sich ändert. Das WordPress soll vollständig auf mehreren Domains "lauschen".

Die Domains pointeten schon alle per A-Record auf den Server mit der WordPress Seite und die Domains waren auch alle als ServerName bzw. ServerAlias in der Vhost Config des Apaches eingerichtet. So weit so gut.

Stand jetzt leitete also die neue Domain dann automatisch zu der in WordPress festgelegten URL. Sprich: in der Adresszeile wurde die Domain durch die Hauptdomain ersetzt. Genau das wollte der Kunde ja nicht.

wp-config.php to the rescue!

Da ich auf eine weitere Dependenz in Form eines Plugins verzichten wollte, habe ich ein wenig recherchiert und stieß auf diese WordPress Supportseite. Dass per WP Config die WordPress WP_SITEURL und die WP_HOME per PHP Konstante festgelegt werden konnte war mir zwar bekannt, jedoch habe ich vorher nie drüber nachgedacht, sie mit einer PHP Servervariable zu belegen.

Die Servervariable HTTP_HOST enthält den Inhalt des Host:-Headers des aktuellen Requests. Sprich er gibt die Host-Domain aus.

Surfe ich beispielsweise https://pixelbar.be/test an, gibt mir die Variable $_SERVER['HTTP_HOST'] somit pixelbar.be aus.

Per define() also fix die WP_SITEURL und WP_HOME überschreiben und schauen was passiert:

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);

Und siehe da: die WordPress Seite war out-of-the-box multi-domain fähig. Es benötigte keine weitere Anpassung. Alles funktionierte soweit und auch der PageCache (Cachify) griff auf Anhieb.

Hinweis: ist eure Seite nicht SSL verschlüsselt (was sie sein sollte!), ersetzt das https:// einfach durch http://.

Das Problem mit dem Duplicate Content

Wir stellten jedoch recht schnell fest, dass wir Probleme mit Suchmaschinen wie Google bekommen würden. Und zwar wegen Duplicate Content.

Sistrix schreibt zu Duplicate Content:

Unter Duplicate Content versteht man doppelte Inhalte, die über mehrere URLs erreichbar sind. Dieser Duplicate Content sollte unbedingt vermieden werden. Der Inhalt einer Seite darf immer nur über eine eindeutige URL erreichbar sein. Duplicate Content stellt Google vor das Problem, welche URL in den Rankings angezeigt werden soll und welche positiven Rankingsignale welcher URL zugeordnet werden.

Zum Glück lässt sich das Problem schnell lösen. Und zwar mit den so genannten Canonical Tags.

SEO-Küche schreibt dazu:

Der Canonical Tag wird eingesetzt, um Webseiten mit doppeltem Inhalt (Duplicate Content) richtig auszuzeichnen. Dieser wird, sobald er von Google erkannt wird, abgestraft. Das heißt, die Seite mit dem sich wiederholenden Inhalt rankt schlechter in den Suchergebnissen. Im Headerbereich des Quelltextes wird er innerhalb eines Link-Elements mit dem Attribut rel=“canonical“ gekennzeichnet. So verlinkt man von einer oder mehreren Kopien einer Website auf das Original. Diese Ursprungsseite wird auch als die „kanonische“ Seite bezeichnet.

Man setzt in den <head> der Website also einen Tag, der die Ursprungsseite dieser Kopie der Seite auszeichnet. Den erkennt Google und straft die Seite dann nicht mehr ab.

Da wir auf all unseren Seiten das YOAST SEO Plugin nutzen, wird der Canonical Tag automatisch mit eingebunden. Dieser wird durch unsere Anpassung oben allerdings mit angepasst und ist somit momentan nutzlos bei der Bekämpfung des Duplicate Contents. Durch einen kleinen Filter haben wir aber die Möglichkeit, die Canonical URL anzupassen.

Fügen wir also dieses Snippet in die functions.php ein und passen es noch ein wenig an:

function pix_change_canonical_to_main_url($url) {
if( strpos($url, 'DEINE-HAUPTDOMAIN.TLD') == false )
$url = str_replace( $_SERVER['HTTP_HOST'], 'DEINE-HAUPTDOMAIN.TLD', $url );
return $url;
}
add_filter( 'wpseo_canonical', 'pix_change_canonical_to_main_url' );

Ersetze hier DEINE-HAUPTDOMAIN.TLD durch die Domain, die als Canonical URL angegeben werden soll.

Fertig. Testest doch mal – ich habe genau diese Snippets auf unserer Seite pixelbar.be Seite eingefügt:

Alle Seiten sind erreichbar mit dem extakt gleichen Inhalt und die URL in der Adresszeile wird nicht umgeschrieben. Die Canonical URL steht bei allen auf https://pixelbar.be/referenzen/.

Das war ja leicht - gibt's sonst was zu beachten?

Um ehrlich zu sein – ich bin selber sehr überrascht darüber wie einfach das einzurichten war und dass ich keine Probleme nach der Umstellung feststellen konnte. Die Canonical URLs sind alle korrekt und die Seite auf allen Domains, die ich auf die Seite pointen lasse erreichbar.

Zugegeben: da wir Plugins nur sehr wenig und bewusst einsetzen, haben wir vielleicht Glück. Advanced Custom Fields funktioniert, der Pagecache per Cachify funktioniert ebenfalls, YOAST funktioniert (die sitemap.xml wird auf beiden URLs korrekt generiert, durch die kleine Anpassung wird die Canonical URL jetzt korrekt ausgegeben…).

Gibt es irgendwelche Probleme oder andere Dinge, die ich eventuell noch nicht bedacht habe? Schreibt sie in die Kommentare! :-)


Adrian Lambertz

Seit 2010 bin ich nun schon bei Pixelbar mit dabei. Zuerst als Auszubildender und nach erfolgreichem Abschluss meiner Ausbildung als Frontend-Entwickler.

Ohne Musik und Kaffee kann ich nicht leben, daher konsumiere ich beides während der Arbeit praktisch durchgehend :).

Daneben liebe ich WordPress – darauf habe ich mich spezialisiert.

Weitere Beiträge von adrian anzeigen

Hinterlasse eine Antwort

Contact us!