301 Redirect: Weiterleitung per htaccess, PHP & Plugin

Ab und an kommt es vor, dass Seiten durch neue ersetzt werden (müssen). Ist die betreffende Seite gut gerankt, wäre es natürlich dumm, auf Traffic und somit Leser und Kunden zu verzichten. Musst du auch nicht, die Lösung heißt 301 Redirect.

Mir persönlich ist das gerade bei meiner Harzer Wanderseite (WordPress) passiert. Die Struktur steht, die ersten Seiten sind im Netz – und schon ist alles nicht ganz so optimal wie gedacht. Dummerweise sind die Seiten, die mich stören, längst in Google gelistet. Was also tun? Einfach die Seiten verlegen und Schwamm drüber? Nicht unbedingt clever, denn wenn Besucher einen 404er (nicht existierende Seite) angezeigt bekommen, verschwinden die meist auf Nimmerwiedersehen.

Schade drum, oder? Vor allem dann, wenn die Seite selbst ja gar nicht gelöscht ist, sondern lediglich einen neuen Pfad erhalten hat. Die gesuchte Information wird weiterhin angeboten, nur auf einer „neuen“ Seite oder vielmehr neuen URL. Was mich störte, war nämlich allein die Struktur. Von daher drängt sich ein 301 Redirect regelrecht auf, zumal dieser nicht schwer zu setzen ist.

Weiterleitung: Was sind 301 & 302 Redirects?

Wobei es sicher besser ist, diese 301 Weiterleitung oder eben 301 Redirect erst einmal zu erklären. Per 301 wird dem Server der Befehl erteilt, beim Aufruf einer URL oder Datei auf eine andere umzuleiten. Weil die URL oder Datei ersetzt, verschoben oder gelöscht wurde, also nicht mehr in ihrer Ursprungsform existiert. Der 301 Redirect steht übrigens für eine dauerhaft verschobene URL/Datei (moved permanently), die ursprüngliche URL/Datei ist somit auf alle Ewigkeit gelöscht.

Parallel gibt es den 302 Redirect für URLs oder Dateien, die eben nicht auf ewig verschoben sind. Ergo signalisiert ein 302 dem Client lediglich eine vorübergehende, nicht dauerhafte Weiterleitung. In punkto SEO sind beide Redirects interessant. Zum einen, um den Traffic weiterleiten zu können. Zum anderen, um den gewonnenen Linkjuice einer URL zu behalten, statt Besucher und Google ins Nirwana zu schicken. Google ist ein gutes Stichwort, denn permanente Crawling-Fehler können zu Sichtbarkeitsverlusten in Suchmaschinen führen. Das will keiner.

Redirect 301 Weiterleitung per htaccess

Kommen wir zur Umsetzung des 301 Redirects. Die erste Lösung für eine 301 Weiterleitung wäre htaccess. Bei WordPress ist die Datei schon vorhanden und braucht lediglich um ein paar Zeilen Code ergänzt werden. Voraussetzung für die 301 Weiterleitung via htaccess ist ein Apache/Linux-Webserver mit mod_rewrite. Das Modul ist in der Regel bereits aktiviert oder lässt sich im Adminbereich aktivieren. Andernfalls kontaktierst du einfach mal deinen Hoster, dass der den mod_rewrite für dich einrichtet.

Wie gesagt, bei WordPress und auch anderen CMS wie Drupal ist die .htaccess-Datei bereits als Standard dabei. Lade die Datei vom Server runter. Füge dann – nach (!) der Erstellung einer Kopie zur Sicherheit – diesen Code hinzu:

RewriteEngine On
Redirect 301 /alt.html http://www.domain.de/neu.html

„RewriteEngine On“ spricht das erwähnte mod_rewrite Modul an. „Redirect 301“ befiehlt die gewünschte Weiterleitung. Der erste Pfad steht für die alte, gelöschte Datei. Der zweite für die neue, auf welche künftig beim Aufruf der alten URL weitergeleitet werden soll.

Wichtig: Zwischen beiden URLs/Pfaden – die übrigens NICHT auf der gleichen Domain liegen müssen, womit der 301 Redirect auch (und gerade) bei einem Domainwechsel interessant ist – ist ein Leerzeichen Pflicht. Bei der ersten (alten) URL musst du außerdem das typische „http://www.domain.de“ weglassen und lediglich die Datei eintragen, ansonsten wird die Weiterleitung nicht erkannt. Die Muster-URLs ersetzt du natürlich durch deine eigenen Pfade. Für weitere 301 Redirects kopierst du einfach die zweite Zeile so oft wie nötig und fügst die jeweiligen alten bzw. neuen URLs ein.

Update Juli 2017: Zuletzt gab es von Brigitte den Kommentar, dass der 301 Redirect via htaccess nicht funzt. Nun bin ich selbst auf die Schnute gefallen. Meinen besten Autoblog habe ich zu meinem Stammhoster umgezogen. Dabei gleich auf SSL umgestellt. Danach war ich am aufräumen.

301 Weiterleitung htaccess in Drupal

Tote Links löschen, 404-Fehler auf passende (neue) Seiten umleiten. Per htaccess. Und bumm, klappte nicht. Wegen SSL? Frage an meinen Hoster. Nee. Gegenfrage: Vielleicht das CMS? Ah… Meine älteren Autoblogs laufen auf Drupal statt WordPress. Also fix gegoogelt. Und siehe da. Laut drupal.org verlangt Drupal einen anderen Code für den 301 Redirect via htaccess. Leider habe ich bei Brigitte die Frage nach dem CMS verpennt. Nun bin ich schlauer. Wenn du also bei Drupal einen 301 Redirect per htaccess setzen willst (bzw. musst), gehst du so vor…

Zuerst suchst du in deiner htaccess diese Stelle:

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# Modify the RewriteBase if you are using Drupal in a subdirectory and
# the rewrite rules are not working properly.
#RewriteBase /drupal

RewriteBase /

Möglich, dass die Stelle in deiner htaccess anders ausschaut. War jedenfalls bei mir so. Wichtig ist, diese Stelle zu finden. Mit „# Various rewrite rules.“ am Anfang sowie „RewriteBase /“ am Ende. Nach diesem Code – und VOR „Rewrite old-style URLS“ – fügst du nun diesen Code ein.

#custom redirects

RewriteRule ^URLalt$ https://www.domain.de/URLneu [R=301,L]

#end custom redirects

„URLalt“ ersetzt du durch die alte Adresse (relativer Link). In „URLneu“ trägst du die neue URL als absoluten Link ein, also samt Domain. Wichtig: Bei „URLalt“ lässt du das „^“ am Anfang sowie das „$“ am Ende stehen. Ebenso wie das [R=301,L] hinter der neuen (absoluten) URL. Das ist nämlich der Drupal Befehl für den 301 Redirect. Bei mehreren Redirects trägst du den nächsten RewriteRule in der nächsten Zeile ein.

Ebenfalls wichtig: Speichern musst du die htaccess im Format UTF-8. Und auch hier muss der (Apache) Server wieder auf mod_rewrite gestellt sein. Das war’s, jetzt müsste die 301 Weiterleitung in Drupal (eigentlich) funzen.

Redirect 301 Weiterleitung per PHP

Eine dritte Möglichkeit der 301 Weiterleitung ist PHP. Daher funzt diese Variante nur bei entsprechenden PHP Dateien. Der große Nachteil gegenüber der 301 Weiterleitung via htaccess ist, dass jedes PHP-Dokument einzeln mit einem zusätzlichen Code versehen werden muss. Diese kommt in die erste Zeile des weiterzuleitenden Dokuments und lautet:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.de/neue-datei.php");
header("Connection: close");
?>

In Zeile zwei wird die neue URL eingetragen, die (PHP)Datei abgespeichert und auf den Server übertragen, fertig. Das Manko der 301 Weiterleitung via Php ist somit klar: Wenn du mehrere URLs weiterleiten willst, vielleicht sogar einige Hundert oder gar Tausend, bist du mit der htaccess besser beraten. Hier reicht die Änderung einer einzigen Datei – fertig.

Redirect 301 Weiterleitung per WordPress Plugin

Eine dritte Variante des 301 Redirect dürfte Webworker freuen, die auf WordPress setzen und sich nicht an den Quellcode trauen. Denn WP bietet zur 301 Weiterleitung wenig überraschend eigene Plugins an. Selbst Erfahrungen mit solchen Plugins habe ich zugegeben keine, für weniger technisch versierte Webmaster aber ist die Variante sicher eine einfache Alternative. Kurz gegoogelt sind schon zwei WP Plugins gefunden: Simple 301 Redirects und Redirection.

Beide 301 Redirect Plugins sind seit Jahren auf dem Markt, kostenlos und werden weiterhin aktualisiert. Die Installation muss wohl kaum erklärt werden und kann direkt im Admin-Bereich der WP-Seite vorgenommen werden (Plugins > Installieren > Feld „Plugin suchen“ > „Simple 301 Redirects“ respektive „Redirection“ eingeben > installieren und aktivieren). Wie gesagt, selbst habe ich die Plugins nicht ausprobiert, aber zumindest zu Simple 301 Redirects ist auf mr-online-marketing.de ein Bericht samt Anleitung zu finden.

301 Weiterleitung: Weitere Infos zum Redirect

Persönlich ziehe ich übrigens die erste Methode der 301 Weiterleitung vor. Die htaccess ist (je nach Aufwand) schnell angeglichen und regelt alles aus einer Datei. Die PHP-Methode ist deutlich aufwendiger, vor allem, wenn es um (sehr) viele Weiterleitungen geht. Plugins wieder gehen zu Lasten der Performance. Daher bin ich mit Plugins generell sparsam bin.

Interessant dürfte noch die Frage sein, wie viele Weiterleitungen eigentlich Google „erlaubt“? Sind zu viele 301 Redirects – egal welcher Variante – eventuell schädlich für deine Seite? Die Antwort gibt Google-Mann Matt Cutts. Im folgenden Google Webmasters Video erklärt Cutts Sinn und Zweck der 301 Weiterleitungen. Die brennendste Frage beantwortet Cutts mit einem klaren Nein. Egal, ob du einen 301 Redirect setzt oder Tausende, Google ist das gleich.

Viel wichtiger als die Menge an 301 Weiterleitungen ist, dass du den Redirect möglichst auf eine echte Ersatz-URL leitest und nicht einfach auf deine Startseite. Das neue Ziel sollte also tatsächlich ein Ersatz für die gelöschte Seite sein. Schließlich wertet Google jede Seite deiner Website einzeln aus. Wenn du keine echte „Ersatzseite“ erstellst, wäre eine peppige 404-Seite wohl besser. Die entschuldigt und erklärt deinem Besucher den Fehler bzw. die Löschung der alten Seite und kann auf andere Unterseiten oder Angebot aufmerksam machen.

Das war’s zum Thema 301 Weiterleitung per htaccess, PHP und Plugin. Kommentare sind wie immer gern gesehen 🙂

9 Antworten auf 301 Redirect: Weiterleitung per htaccess, PHP & Plugin

  • Vielen Dank für deine Anleitung! Du hast mir mit deiner Anleitung sehr geholfen und mich überzeugt, die erste Variante zu nehmen. Ich muss bei mir auf dem Blog nur 3 oder 4 Seiten umleiten, sollte also keine all zu große Sache sein. Werde das morgen direkt umsetzten.
    Liebe Grüße und ein schönes Wochenende, Karim.

  • Hallo,
    wenn du es selbst nicht benutzt oder gemacht hast, dann solltest du auch keine Blog-Beiträge darüber schreiben. Sowas wirkt in meinem Augen absolut unseriös. ich habe das Plugin installiert und ich finde kein Menü, um irgendetwas einzugeben. Deine Anleitung verstehe ich auch nicht und sagt auch nichts aus, sondern verwirrt nur noch mehr.

    • Hallo Caroline, ich habe ganz offen gesagt, dass ich diese Plugins noch nicht genutzt habe. Und daher auf eine Seite mit einer Anleitung verlinkt. Transparenter geht’s doch nicht. Davon ab könnte man (bzw. frau) einfach mal selber googeln?! Die meisten Plugins werden weiterentwickelt, somit ändern sich manche Sachen im Laufe der Zeit. Menü: linke Seite > Plugins? Eventuell wird das Plugin auch gesondert (linkes WP-Menü) geführt.

  • Vielen Dank – das ist sehr gut erklärt – doch funktioniert es nicht 🙁

    Ich möchte einen RSS-Feed umleiten. Muss ich da noch etwas anderes beachten? Außerdem gibt es bereits eine Weiterleitung in meiner .htaccess und ich weiß nicht, wo ich die zweite Weiterleitung einfüge.

    • Hallo Brigitte, auf was willst du den Feed umleiten? Eigentlich reicht die alte Adresse plus dahinter die neue Feed-URL. Bei der alten URL ist halt wichtig, dass du die Domain weglässt, also wirklich nur den „Rattenschwanz“ nimmst. Ansonsten baust du zweite Weiterleitung einfach unter die erste Weiterleitung ein. Da kannst du dann sogar das „RewriteEngine On“ weglassen und eben nur die alte und neue URL einfügen (im fetten Beispiel die zweite Zeile). htaccess speichern und auf den Server hochladen, fertig.

  • Vielen Dank! Doch das funktioniert auch nicht 😉 Oder ich habe da irgend einen Fehler im Text.

    Ich habe jetzt das Plugin Simple 301 Rederechts genommen und das klappt 🙂 Hier muss man bei Request auch nur den „Rattenschwanz“ einfügen.

    Vielen Dank Dennis!

    • Gern doch, auch wenn ich keine große Hilfe war 🙂 Die neue URL hast du dann schon komplett angegeben? Weil die MUSS wieder komplett sein. Ist halt ein bissel ulkig gemacht…

  • Ja, die neue URL habe ich komplett angegeben. Ja, ich finde das auch komisch – mal so und mal so 😉

    Aber auf jeden Fall funktioniert es jetzt 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.