301-Weiterleitung. Wichtigste Einsatzgebiete
1
Müssen Sie mit einer Domain umziehen? 301-Weiterleitung schafft Abhilfe
2
Nutzen Sie die 301-Weiterleitung um Pagerank Ihrer Seiten beizubehalten
3
Beugen Sie 404-Fehlern vor und beseitigen Sie bereits existierende Probleme
4
Vermeiden Sie Duplicate Content und Ranking-Verluste in den Suchmaschinen
Volltextsuche in den Redirect Beispielen unten
Inhaltsverzeichnis
- 301-Weiterleitung. Wichtigste Einsatzgebiete
- Volltextsuche in den Redirect Beispielen unten
- Inhaltsverzeichnis
- Einführung in 301-Weiterleitung, mod_rewrite, .htaccess
- Was ist der 301-Redirect?
- 301-Einsatzgebiete
- .htaccess-Datei
- mod_rewrite
- Erstellung einer .htaccess-Datei
- Fehler in der .htaccess-Datei
- Wichtige Hinweise zur Arbeit mit mod_rewrite und 301-Weiterleitung
- Funktionierende Beispiele der Umleitungen mit mod_rewrite
- Redirect von non-www. auf www.
- Redirect von www. auf non-www.
- Redirect von index.html (index.php) aufs Root-Verzeichnis
- Slash am URL-Ende entfernen
- Slash am URL-Ende hinzufügen
- Redirect von der alten auf die neue Unterseite (Unterseite umgezogen oder umbenannt). Weiterleitung einer einzelnen Unterseite.
- Redirect vom alten auf den neuen Ordner mit Inhalten, nach der Umbenennung oder Umzug
- Die 301-Weiterleitung für kompliziertere Fälle
- Unterseite oder Ordner wurden entfernt
- Datei mit der Dateiendung .html wurde entfernt
- HTTPS-„Impfung“, oder wie man https-Seiten in Suchergebnissen verhindert
- Seiten mit https nach http umleiten
- Separate robots.txt für das https-Protokoll erstellen
- robots_https.txt
- Weitere Möglichkeiten zum Ausschließen von URLs
- Umleitung von http auf https per 301-Weiterleitung in der .htaccess
- Ein Unterverzeichnis von http auf https per 301-Weiterleitung in der .htaccess
- Domainumzug, alle Seiten einer Domain auf die Startseite einer neuen Domain umleiten
- Domainumzug, alle Seiten einer Domain auf die gleichnamigen Seiten einer neuen Domain umleiten
- Domainumzug, alle Seiten eines Ordners einer Domain auf die gleichnamigen Seiten eines Ordners einer neuen Domain umleiten
- 301-Redirect der Parameter URLs. SEO-freundliche URLs aus GET-Variablen mit .htaccess
- Einfache Weiterleitung mit GET Parametern
- Einfache Weiterleitung mit GET Parametern nur von einer bestimmten Seite. CMS Umzug
- So können GET-Parameter entfernt werden:
- Wordpress Archive und Author Pages entfernen
- 301-Redirect mit PHP
- Meta-Refresh oder HTML-Weiterleitung. KEINE 301-Weiterleitung
- Eine direkte Umleitung:
- Eine Weiterleitung mit 3 Sekunden Verzögerung:
Einführung in 301-Weiterleitung, mod_rewrite, .htaccess
Was ist der 301-Redirect?
301 ist der HTTP-Statuscode (Moved Permanently – dauerhaft verschoben), welcher von einem Server auf eine HTTP-Anfrage von einem http-Client oder einer Suchmaschine als Antwort geliefert wird. Der 301 Statuscode bedeutet, dass eine Unterseite, ein Ordner oder die gesamte Website permanent, also für immer verschoben wurde.
Immer wieder wird von Google bestätigt, dass eine 301-Weiterleitung die technisch sauberste Möglichkeit bei SEO-Angelegenheiten jeglicher Art ist. Daher ist sie in der SEO-Scene, aber nicht nur, sehr beliebt und entsprechend häufig eingesetzt.
Für den User bleibt ein richtig formulierter Redirect völlig unbemerkt, da dieser Vorgang im Hintergrund abläuft.
Was wollen wir mit dem 301-Redirect? Wir wollen SEO!
301-Einsatzgebiete
Die 301-Weiterleitung wird immer dann eingesetzt, wenn eine Änderung der Link-Struktur einer Website auf der Tagesordnung steht. Mögliche Gründe dafür wären beispielsweise:
– Umzug einer ganzen Domain
– Einsatz eines neuen CMS und der Umzug existierender Inhalte aus dem alten CMS
– Verschiebung eines Ordners (mit kompletten Inhalten)
– Zuweisung eines Beitrags einer anderen Kategorie, beispielsweise in WordPress
– Zusammenführung mehrerer Websites unter eine Domain
– Erreichbarkeit einer Domain mit und ohne www. und daraus resultierendes Problem mit Doppel Content in den Suchmaschinen
– Erreichbarkeit einer Website (der gleichen Inhalte) unter mehreren Domains bzw. Domainendungen, beispielsweise example.com und example.de, was auch zu Duplicate Content führt
.htaccess-Datei
Die Einrichtung der 301-Weiterleitungen wird in einer .htaccess-Datei vorgenommen, wenn Sie unter Linux arbeiten und als Web-Server Apache laufen haben. Für den Windows Webserver IIS werden 301-Weiterleitungen in der web.config-Datei vorgenommen.
301-Weiterleitung in unterschiedlich gängigen CMS wie WordPress, Joomla, Drupal, MODX, und anderen erfolgt mit speziellen Plug-Ins, sowie der üblichen Weise über eine .htaccess oder eine web.config-Datei.
Zuerst muss man im Root-Verzeichnis einer Website die .htaccess Datei anlegen. Genauso können mehrere .htaccess-Dateien in einzelnen Unterverzeichnissen erstellt werden. Eine .htaccess wirkt nur auf das Verzeichnis in dem sie liegt, sowie auch auf darunter liegende Verzeichnisse. Eltern- oder Geschwisterverzeichnisse sind von der Wirkung ausgeschlossen.
mod_rewrite
Erst wenn mod_rewrite auf dem Server aktiv ist, kann die 301-Weiterleitung beispielsweise mit einem regulären Ausdruck vorgenommen werden.
Mod_rewrite ist ein Apache-Modul, welcher auf einem Linux-Server in der httpd.conf-Datei aktiviert werden kann. Mod_rewrite stellt eine Reihe von Anweisungen (regulärer Ausdrücke) zur Verfügung, die diverse Manipulationen mit URLs ermöglichen.
Mod_rewrite und der Einsatz von .htaccess-Dateien muss – falls man ein Hostingpaket gemietet hat – vom Provider gestattet und freigeschaltet werden. Mit einem dedizierten- oder Virtual-Server ist man in der Lage, dies selbst zu bestimmen.
Erstellung einer .htaccess-Datei
Wie erstellt man eine .htaccess-Datei? Die nahe liegende Möglichkeit, schlicht eine neue .txt-Datei zu erstellen und die dann umzubenennen funktioniert nicht und endet mit einer Windows-Fehlermeldung „Geben Sie einen Dateinamen ein“. Jedoch gibt e zwei weitere Möglichkeiten:
1) Man lädt die Textdatei htaccess.txt auf den Server hoch und benennt sie dort um. Genau so kann man in einem FTP-Programm direkt auf dem Server eine neue .htaccess-Datei erstellen.
2) Unter Windows klappt es erstaunlicherweise, wenn man im Editor eine neue Datei erstellt und sie erst danach unter dem Namen „.htaccess“ abspeichert. Das wird von Windows unerwartet toleriert.
Fehler in der .htaccess-Datei
Fehler in der .htaccess-Datei darf es nicht geben, d.h. sie muss zu 100 Prozent korrekt und fehlerfrei sein. Kleinste Fehler resultieren direkt in einem „500 Internal Server Error“ – Fehler. Zu beachten ist: eine im Root-Verzeichnis abgelegte .htaccess-Dateie hat ihre Geltung über den kompletten Server und allen Unterverzeichnissen. Das gilt leider auch für Fehler, was zur Folge hat: ein Fehler in der .htaccess-Datei im Rootverzeichnis führt dazu, dass die gesamte Webpräsenz nicht erreichbar ist.
Eine Sicherheitskopie vor jeder Änderung der .htaccess-Datei!
Wichtige Hinweise zur Arbeit mit mod_rewrite und 301-Weiterleitung
1) Die Umleitungen sollten in einer .htaccess-Datei vom einfachen und genauen zu den globaleren und allumfassenden von oben nach unten erfolgen. Beispiel: eine einfache Weiterleitung zweier Unterseiten sollte höher als die globale Regel für „von ohne www. zu mit www.“ erfolgen.
2) Vermeiden Sie zwei, drei etc. aufeinander folgende Weiterleitungen. Die Regeln müssen so eingerichtet werden, dass der User oder der Roboter nur einmal umgeleitet werden. Jede zusätzliche Weiterleitung bedeutet Verlust kostbarer Zeit, erhöht Serverlast und ist nicht eindeutig für den Suchmaschinen-Crawler.
3) Vergessen Sie nicht, dass viele Browser Weiterleitungen im Cache speichern, das macht die Überprüfung angepasster Redirects nicht möglich. Leeren Sie also entweder den Browsercache oder nutzen Sie einen Online-Service wie http://web-sniffer.net/ zur Ermittlung von HTTP-Statuscodes.
UPDATE: zur Ermittlung von HTTP-Statuscodes präsentieren wir stolz unseren hauseigenen Redirect-Checker
4) Erstellen Sie vor jeder Änderung Ihrer .htaccess-Datei unbedingt eine Sicherheitskopie, da Eingaben in der .htaccess Datei schwerwiegende Auswirkungen auf Ihre gesamte Website zur Folge haben!
Funktionierende Beispiele der Umleitungen mit mod_rewrite
Wir veröffentlichen hier nur bewährte und fertige Beispiele von 301-Weiterleitungen, welche von laufend ergänzt und aktualisiert werden. Falls es mehr als einen Weg zum Ziel gibt, der uns bekannt ist, veröffentlichen wir den auch. Vergessen Sie nicht, mit der Direktive RewriteEngine on mod_rewrite einzuschalten!
Vor jedem Beispiel als 1. Zeile „RewriteEngine on“ nicht vergessen!
Redirect von non-www. auf www.
Dadurch wird erreicht, dass alle Aufrufe ohne www. auf www. umgeleitet werden. Wirkung: ganze Domain.
Das Problem, welches dadurch gelöst wird: falls Suchmaschinen-Crawler eine Website mit oder ohne den Vorsatz „www.“ erreichen können, könnten sie meinen, dass es sich um zwei unterschiedliche Websites handelt, mit jeweils gleichen Inhalten, was ein typisches Beispiel von Duplicate Content (Doppelte Inhalte) ist.
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
Diese Lösung ist wesentlich eleganter, als die gewöhnliche Lösung, wo der Host konkret angegeben wird
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Redirect von www. auf non-www.
Dadurch wird erreicht, dass alle Aufrufe mit www. auf ohne-www. umgeleitet werden. Wirkung: ganze Domain. Problematik: siehe oben.
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Diese Lösung ist wesentlich eleganter, als die gewöhnliche Lösung, wo der Host konkret angegeben wird
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.org/$1 [L,R=301]]
Redirect von index.html (index.php) aufs Root-Verzeichnis
Es ist das ähnliche Problem mit Duplicate Content, dass die Startseite einer Website nicht nur mit oder ohne „www.domain.tld“ erreichbar ist, sondern auch dass die Startseite unter www.domain.tld/index.html (häufig index.php etc.) aufgerufen werden kann.
Die Datei index.html erzeugt ebenfalls doppelte Inhalte aus Sicht der Suchmaschinen. Eine Webseite kann mit www.example.com und mit www.example.com/index.html aufgerufen werden.
„Traditionelle“ Lösung:
RewriteCond %{REQUEST_URI} /index.html
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://www.example.com/? [R=301,L]
Unsere Lösung:
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /index.html
RewriteRule ^(.*)$ %1/? [R=301,L]
Slash am URL-Ende entfernen
Der unten aufgeführte Code entfernt den abschließenden Slash vom Ende der URL und leitet die Anfrage entsprechend auf die Adresse ohne den Slash um. Heutzutage ist die Notwendigkeit dieser Maßnahme, die eigentlich auch gegen Duplicate Content vorgenommen wird, fragwürdig.
Eine pauschale Antwort, welche der beiden Strukturen besser ist, gibt es nicht. Ein Tipp: sie sollte konsistent sein. Anmerkung: viele CMS machen das von alleine.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
Slash am URL-Ende hinzufügen
Der unten aufgeführte Code fügt den abschließenden Slash ans Ende der URL hinzu und leitet die Anfrage entsprechend auf die Adresse mit Slash um.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
Redirect von der alten auf die neue Unterseite (Unterseite umgezogen oder umbenannt). Weiterleitung einer einzelnen Unterseite.
Es kann sein, dass eine Unterseite umbenannt wurde. Die alte Unterseite ist entsprechend nicht mehr aufrufbar, dafür kommt eine neue Unterseite. Dann ist der Code, der dafür sorgt, dass der Suchmaschinen Crawler die alte URL der neuen zuordnen kann.
Ein Vorteil dabei: es entstehen keine Fehlermeldungen auf der Website, auch wenn Ihre Seitenbesucher beispielsweise ein Browser-Lesezeichen gesetzt auf die alte Seite gesetzt haben. Ein weiterer, SEO-Vorteil dabei: Der Pagerank bzw. die Linkpower wird bei einer 301-Weiterleitung von der alten auf die neue Seite übertragen.
RewriteRule ^alter-unterseite-cms/?$ /neue-unterseite-cms/ [R=301,L]
Ein anderes Beispiel zur Verdeutlichung. Das Mambo CMS wurde in Joomla umbenannt. Angenommen, es gab ein Schlagwort im System, welches „mambo“ lautete. Den wollen wir in „joomla“ umbenennen, dabei den Pagerank nicht verlieren. Folgender Code sorgt dafür:
RewriteRule ^tag/mambo/?$ /tag/joomla [R=301,L]
Oder als Beispiel bei Dateien mit .html-Endungen
RewriteRule ^alter-ordner/index.html$ /neuer-ordner/index2.html [R=301,L]
Redirect vom alten auf den neuen Ordner mit Inhalten, nach der Umbenennung oder Umzug
Im Gegensatz zum Beispiel mit einzelnen Unterseiten ist es möglich, dass ein Ordner mit Inhalten umgezogen oder umbenannt wird. Es muss gewährleistet werden, dass alle Inhalte im Ordner, oder zum Beispiel alle Artikel einer Kategorie im CMS, falls Kategorie umbenannt wird, entsprechend unter neuen URLs zu erreichen sind. Der Code unten sorgt dafür. Er bewirkt auch, dass wenn es einen Artikel gab, der unter „example.org/redirect/wie-funktioniert-301-redirect“ zu erreichen war, jetzt unter „example.org/weiterleitung/wie-funktioniert-301-redirect“ erreichbar sein wird.
RewriteRule ^redirect/(.*)$ /weiterleitung/$1 [R=301,L]
Ein anderes Beispiel: im WordPress CMS kann man unter „Einstellungen -> Permalinks“ die Struktur der Kategorien und Tags (Schlagworte) festlegen. Das gewährleistet beispielswiese folgende URL-Struktur: example.com/schlagwort/seo oder example.com/category/lesenswertes.
Möchte man nun die Linkstruktur so ändern, dass alle Schlagworte „/tags/“ statt „/schlagworte/“ als Tag-Basis haben , nimmt man diese Änderung im WordPress Admin-Bereich auch vor.
Um jedoch Fehler zu vermeiden und den Linkjuice beizubehalten, empfiehlt es sich folgende Zeile in der .htaccess-Datei. Dadurch erreicht man, dass die Inhalte, welche unter /schlagwort/tag-1, /schlagwort/tag-2 etc. nun unter /tags/tag-1, /tags/tag-2 aufrufbar sind.
RewriteRule ^schlagwort/(.*)$ /tags/$1 [R=301,L]
Die 301-Weiterleitung für kompliziertere Fälle
Seite besuchen
Unterseite oder Ordner wurden entfernt
Ganz häufig werden Unterseiten, Schlagworte und weitere Bereiche entfernt. Als erstes bietet sich eine Lösung, die bereits oben präsentiert wurde. Es sollte die thematisch ähnlichste Seite gefunden und eine 301-Weiterleitung auf sie organisiert werden. So geht die wertvolle Link-Power nicht verloren. Findet sich keine Seite, die dafür geeignet ist, kann eine Weiterleitung auf die Startseite folgendermaßen erstellt werden:
RewriteRule ^ordner-mit-inhalten-ist-weg(.*)$ / [R=301,L]
Datei mit der Dateiendung .html wurde entfernt
So ähnlich verhält es sich mit den Dateien, die Dateiendungen vorweisen. Sie können mit folgendem regulären Ausdruck auf die Startseite umgeleitet werden:
RewriteCond %{REQUEST_URI} /pfad-zu/einer-datei.html
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ [R=301,L]
HTTPS-„Impfung“, oder wie man https-Seiten in Suchergebnissen verhindert
Heutzutage spekuliert man häufig darüber, ob Google tatsächlich HTTPS-Verschlüsselung in den Suchergebnissen belohnt.
2013 wurden viele SEO’s mit einem anderen Problem konfrontiert: es sind plötzlich in den Suchergebnissen von Google viele Seiten mit https:// aufgetaucht, obwohl keiner es gewollt oder darauf verlinkt hat. Nicht mal Inhalte unter https wurden angeboten.
Besitzt man kein SSL Zertifikat, kommt in Firefox die hässliche Meldung „Dieser Verbindung wird nicht vertraut“ und in Internet Explorer „Es besteht ein Problem mit dem Sicherheitszertifikat der Website“. In Chrome lautet die Meldung „Ihre Verbindung ist nicht privat. Angreifer könnten versuchen…“
Die User waren verunsichert, da aus dem Browser eine Bitte kam, das Risiko zu bestätigen, was natürlich zur Folge hat, dass die Seiten sofort geschlossen wurden. Was kann man dagegen unternehmen?
Seiten mit https nach http umleiten
Es liegt die Vermutung nah, dass https-Seiten nach http umgeleitet werden müssen. Das wird tatsächlich mit folgendem regulären Ausdruck erreicht:
RewriteCond %{SERVER_PORT} ^443$
RewriteRule (.*) http://%{HTTP_HOST}/$1 [R=301,L]
Eine Alternative wäre:
RewriteCond %{HTTPS} ^on$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
Das Problem dabei: die Umleitung kann lediglich dem Suchmaschinen Crawler mitteilen, dass die richtige Adresse http sein soll. Die Warnmeldung kann sie leider nicht verhindern, wenn ein Besucher die https-Seite aufruft. Der Server baut als erstes eine https-Verbindung auf, erst danach kommt der Hinweis, dass auf http umgeleitet werden muss.
Separate robots.txt für das https-Protokoll erstellen
Pro Domain darf es nur eine robots.txt-Datei geben, die im Root-Verzeichnis der Webpräsenz hinterlegt wird. Jedoch akzeptiert Google eine Ausnahme und zwar, wenn Inhalte sowohl über http:// als auch https:// angeboten werden.
In diesem Fall darf man zwei separate Versionen von robots.txt anlegen! Das tun wir mit folgendem regulären Ausdruck und erreichen nachträglich durch das Indexierungsverbot in der robots.txt für https dass Suchmaschinen keine https-Inhalte crawlen und indexieren!
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^robots\.txt$ robots_https.txt [L]
robots_https.txt
In der robots_https.txt Datei verbieten wir dann die Indexierung der https://-Inhalte durch folgende zwei Zeilen:
User-agent: *
Disallow: /
Fertig! Hat man Glück, funktioniert die Lösung innerhalb weniger Tage!
Weitere Möglichkeiten zum Ausschließen von URLs
Außerdem könnte man die URLs, die nicht indexiert werden sollten, über Google Webmaster Tools unter dem Menüpunkt „Google-Index -> URLs entfernen“ aus den Suchergebnissen entfernen lassen. Außerdem sollte man in den Servereinstellungen, falls man Zugriff darauf hat, das https-Protokoll deaktivieren.
Umleitung von http auf https per 301-Weiterleitung in der .htaccess
Anfang August 2014 verkündete Google in seinem deutschsprachigen Webmaster-Zentrale Blog, dass https nun als Ranking-Signal gilt. Es ist zwar bisher nur ein „minimales Signal“ mit einem geringeren Stellenwert als andere Signale, jedoch schließt Google die Möglichkeit nicht aus, im Laufe der Zeit dieses Signal höher zu bewerten um Websiteinhaber zum Wechseln auf gesichertes SSL-Protokoll anzuregen „… und dadurch die Sicherheit im Web zu erhöhen“.
Bevor Sie auf https umstellen, müssen Sie ein gültiges Zertifikat erwerben!
Mit diesem regulären Ausdruck wird bewirkt, dass alle http-Anfragen auf die https-Version der Website per 301-Redirect weitergeleitet werden.
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
Eine Alternative:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
Ein Unterverzeichnis von http auf https per 301-Weiterleitung in der .htaccess
Falls Sie nur ein bestimmtes Verzeichnis, beispielsweise den Warenkorb oder den Kundenbereich auf SSL-Verbindung umleiten möchten, benutzen Sie folgenden regulären Ausdruck
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} /warenkorb/?
RewriteRule ^(.*)$ https://%{HTTP_HOST}%1/$1 [R=301,L]
Domainumzug, alle Seiten einer Domain auf die Startseite einer neuen Domain umleiten
Ist ein Domainumzug vollzogen und möchte man alle Aufrufe der alten Domain auf die neue Domain weiterleiten ohne, dass die Seitenstruktur beibehalten wird, nutzt man folgenden Code, der Aufrufe aller Seiten der alten Domain auf die Startseite der neuen Domain (neue-domain.tld) weiterleitet.
Beispiel: „http://www.alte-domain.tld/“eine-seite wird auf „http://www.neue-domain.tld“ weitergeleitet. Dieser Code muss in der .htaccess der alten Domain hinterlegt werden.
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://www.neue-domain.tld/ [L,R=301]
Domainumzug, alle Seiten einer Domain auf die gleichnamigen Seiten einer neuen Domain umleiten
Möchte man alle Aufrufe der alten Domain auf die passenden Seiten der neuen Domain weiterleiten und dabei die Seitenstruktur beibehalten, nutzt man den regulären Ausdruck, der Aufrufe aller Seiten der alten Domain auf die gleichnamigen Unterseiten der neuen Domain weiterleitet.
Beispiel: der Aufruf „http://www.alte-domain.tld/eine-seite/“ wird auf „http://www.neue-domain.tld/eine-seite/“ weitergeleitet. Dieser Code muss in der .htaccess der alten Domain hinterlegt werden.
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://neue-domain.tld/$1 [L,R=301]
Domainumzug, alle Seiten eines Ordners einer Domain auf die gleichnamigen Seiten eines Ordners einer neuen Domain umleiten
Möchte man alle Aufrufe eines (Unter)Ordners der alten Domain auf die passenden Seiten eines (Unter)Ordners der neuen Domain weiterleiten und dabei die Seitenstruktur beibehalten, nutzt man dafür folgenden regulären Ausdruck, der Aufrufe eines Unterordners der alten Domain auf die gleichnamigen Unterseiten eines Unterordners der neuen Domain weiterleitet.
Beispiel: der Aufruf „http://www.alte-domain.tld/eine-seite/“ wird auf „http://www.neue-domain.tld/eine-seite/“ weitergeleitet.
Beispiel: der Aufruf „http://www.alte-domain.tld/eine-seite/andere-seite/“ wird auf „http://www.neue-domain.tld/eine-seite/andere-seite/“ weitergeleitet.
Dieser Code muss in der .htaccess der alten Domain hinterlegt werden.
RewriteCond %{REQUEST_URI} eine-seite
RewriteRule ^(.*)$ http://neue-domain.tld/$1 [L,R=301]
301-Redirect der Parameter URLs. SEO-freundliche URLs aus GET-Variablen mit .htaccess
Es kommt in vielen Fällen vor, dass unschöne URLs mit Parametern suchmaschinenfreundlich umgestaltet werden müssen. Dabei erstellen viele CMS heutzutage schöne URLs von alleine. Sehr einfach geht das zum Beispiel in WordPress: in der Admin Oberfläche ist die Option dafür unter „Einstellungen -> Permalinks“ zu finden. Die Linkstruktur kann dort selbst definiert werden.
Einfache Weiterleitung mit GET Parametern
Eine einfache Weiterleitung. Kommt in der URL ein Parameter „?id=555“ – egal in welcher URL – vor, wird der Aufruf auf „/test“ weitergeleitet
URL „example.org/index.html?id=555“ wird auf „example.org/test“ weitergeleitet
URL „example.org/kontakt.html?id=555“ wird auf „example.org/test“ weitergeleitet
RewriteCond %{QUERY_STRING} ^id=555
RewriteRule ^.*$ /test/? [R=301,L]
Einfache Weiterleitung mit GET Parametern nur von einer bestimmten Seite. CMS Umzug
Der Code oben ergibt – ganz ehrlich – möglicherweise nicht sehr viel Sinn und ist nur fürs Abfangen einer bestimmten ID gut. Eher braucht man den Code in der Form, welche Weiterleitungen nur von einer bestimmten Unterseite erlauben.
Angenommen, es existierte ein selbstentwickeltes CMS, mit 6 Unterseiten in Form index.php?id=1, index.php?id=2, … index.php?id=6, wobei id=1 die Startseite aufruft und id=6 die Kontaktseite.
Das Projekt wird einem Relaunch unterzogen und hat nun ein modernes CMS WordPress unter der Haube. Nun, damit unsere Besucher nicht verwirrt werden und der Pagerank nicht verloren geht, müssen alle 6 alten URLs an die neuen per 301-Redirect weitergeleitet werden.
Durch folgenden regulären Ausdruck wird der Aufruf von „example.org/index.php?id=6“ auf „example.org/kontakt“ weitergeleitet. Der reguläre Ausdruck muss dann für unser Beispiel 6 Mal (für alle Seiten) wiederholt werden.
RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^id=6
RewriteRule ^(.*)$ /kontakt/? [R=301,L]
Der Aufruf von „example.org/index.php?id=1“ leitet auf „example.org/“ per 301 weiter:
RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^id=1
RewriteRule ^(.*)$ /? [R=301,L]
Wenn die ID in der URL zufälligerweise mit den Namen neuer Unterseiten übereinstimmen, dann hat man Glück gehabt und muss den regulären Ausdruck unten nur einmal wiederholen! Das ist der Fall, wenn IDs vorher entsprechend waren.
Beispiele: „example.org/index.php?id=kontakt“ wird damit auf „example.com/kontakt“, „example.org/index.php?id=anfahrt“ auf „example.com/anfahrt“ weitergeleitet.
RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{query_STRING} ^id=(.*)$
RewriteRule ^(.*)$ /%1/? [R=301,L]
So können GET-Parameter entfernt werden:
Beispiel: der Aufruf von „example.org/index.php?id=1“ leitet auf „example.org/index.php“ weiter:
RewriteCond %{QUERY_STRING} ^id=1$
RewriteRule ^(.*)$ /$1? [R=301,L]
WordPress Archive und Author Pages entfernen
Das von vielen beliebte CMS WordPress erstellt Archive in Form von Jahr/Monat/: 20(xx)/(xx)/, beispielsweise „example.org/2040/10/“. Diese Seiten sind ein gutes Beispiel von „thin Content“ oder minderwertigen Inhalten. Sie sollten aus Googles Index verschwinden.
Genauso werden Author Pages in Form von author/name erstellt, beispielsweise „example.org/author/max/“. Diese Seiten sind in 99% der Fälle Duplicate Content und sollten auch aus dem Index verschwinden.
Das erreichen wir mit einer Zeile in der .htaccess-Datei
RewriteRule ^(20[0-9]{2}|author)/(.*)$ / [R=301,L]
301-Redirect mit PHP
PHP bietet auch eine Möglichkeit, eine vollwertige 301-Weiterleitung zu organisieren. In den ersten Zeilen einer PHP-Datei – und das ist eine zwingende Voraussetzung – muss sich folgender Code befinden:
<?php
header("Location: http://example.org/new-location/", true, 301);
?>
Meta-Refresh oder HTML-Weiterleitung. KEINE 301-Weiterleitung
Das ist keine gute Lösung und wird meistens verwendet, wenn eine Weiterleitung mit Verzögerung stattfinden soll. Zu erwähnen ist noch, dass es keine server- sondern eine clientseitige Lösung. Es wird mittels folgendes HTML-Codes realisiert, welcher im Kopfbereich einer Seite, zwischen <header> und </header> eingefügt wird.
Eine direkte Umleitung:
<meta http-equiv="refresh" content="0; url=http://www.example.org/weiterlesen.html">
Eine Weiterleitung mit 3 Sekunden Verzögerung:
<meta http-equiv="refresh" content="3; url=http://www.example.org/weiterlesen.html">