Wie erstelle ich eine 301-Weiterleitung?

Eine 301-Weiterleitung übergibt von einem Webserver an den Anfragenden Client, z.B. dem Google-Bot oder einem User, den HTTP-Statuscodes 301 und teilt dadurch mit, dass die angeforderte Ressource (z.B. eine URL) dauerhaft verschoben wurde (engl. moved permanently) und fortan unter einer neuen URL auffindbar ist.

Eine 301-Weiterleitung kann mittels PHP oder der .htaccess-Datei und dem dafür notwendigen mod_rewrite Module des Apache Webservers ganz einfach erstellt werden – das gilt auch für Nginx.

Erstellung einer 301-Weiterleitung mit PHP

Möchte man eine 301-Weiterleitung mittels PHP einrichten, so muss das Quell-Dokument eine PHP-Datei sein. Ist diese Voraussetzung erfüllt, wird der PHP-Code zur 301-Weiterleitung direkt in das weiterzuleitende Dokument geschrieben.
 
Füge folgenden Quellcode in die erste Zeile des weiterzuleitenden Dokuments ein:

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

Funktion: Durch Einfügen des oben genannten Quellcodes in die Datei „der-alte-name.php“, aufrufbar über „domain.de/der-alte-name.php“, werden fortan alle Besucher auf die neue Quelle „domain.de/der-neue-name.php“, (Zeile 3.), weitergeleitet und der HTTP-Statuscode 301 Moved Permanently (Dauerhaft verschoben) wird übergeben.

Erstellung einer 301-Weiterleitung für Apache mittels .htaccess

Möchte man eine 301-Weiterleitung mittels der .htaccess-Datei einrichten, so ist ein Apache Webserver mit aktivierten mod_rewrite Module Voraussetzung. Da Apache der am weitesten verbreitete Webserver ist1, werden nahezu alle großen Webhoster standardmäßig diesen im Einsatz haben. Auch ist das benötigte mod_rewrite Module in den meisten Fällen bereits aktiviert. Eine .htaccess-Datei ist ebenfalls bei den meisten Webhosting-Paketen vorhanden.
 
Füge folgenden Quellcode in die .htaccess-Datei ein:

RewriteEngine On
RewriteRule  ^vz/dokument.html  https://www.domain.de/dokument.html  [R=301]

Funktion: Durch den Befehl „RewriteEnginge On“ wird das mod_rewrite Modul des Apache Webserver angesprochen. Die zweite Code-Zeile beginnt mit der Anweisung „RewriteRule“ und legt den Pfad fest, bei welchem Dokument oder welchen Dokumenten die darauf folgende Weiterleitung durchgeführt werden soll.

Getrennt von einem Leerzeichen wird dahinter in die gleiche Zeile die Ziel-URL geschrieben, auf die man den Google-Bot sowie den User umleiten möchte.

In unserem Beispiel ist die Datei „dokument.html“ fortan nicht mehr in dem Ordner „/vz/“ zu finden, sondern eine Ebene höher unter dem Domainnamen.

Abschließend wird in eckigen Klammern festgelegt, welchen HTTP-Statuscode der Server für diese Weiterleitung ausweisen soll. Hier ist es wichtig den Status Code als 301 zu definieren, da Apache ohne diese explizite Ansage standardmäßig den Status Code 302 nutzt2.

Erstellung einer 301-Weiterleitung für Nginx

Neben Apache wird Nginx am zweithäufigsten als Webserver eingesetzt. Hier werden die Anweisungen nicht in einer separaten Datei aufgeführt, sondern stehen direkt in der nginx.conf.

Füge folgenden Quellcode zu deiner nginx.conf-Datei hinzu, entweder im bestehenden server-Block oder einem neuen:

rewrite ^/vz/dokument.html $scheme://$host/dokument.html permanent;

Funktion: Die erste Code-Zeile beginnt mit der Anweisung „rewrite“ und legt den Pfad fest, bei welchem Dokument die darauf folgende Weiterleitung durchgeführt werden soll.

Auch hier wird danach, getrennt von einem Leerzeichen die Ziel-URL aufgelistet. Nginx übernimmt dank $scheme selbständig ob es um http oder https geht und mit $host wird der entsprechende Host eingetragen.

Die Anweisung „permanent“ sorgt dafür, dass die Weiterleitung den Status-Code 301 nutzt.

Großangelegte Weiterleitungen mit regulären Ausdrücken

Sollen alle Dokumente und Unterverzeichnisse umgeleitet werden, kann auch mit regulären Ausdrücken gearbeitet werden.

rewrite ^/vz/(.*)$ $scheme://$host/$1 permanent;

Mit dieser Anweisung würden alle Dokumente die im Verzeichnis /vz/ liegen, ins root-Verzeichnis umgeleitet. domain.de/vz/dokument2.html würde auf domain.de/dokument2.html geleitet und domain.de/vz/verzeichnis2/dokument3.html würde bei domain.de/verzeichnis2/dokument3.html landen.

Erstellung einer 301-Weiterleitung unter Lighttpd oder Microsoft Internet Information Services (IIS)

Für unerfahrene User ist die Einrichtung einer 301-Weiterleitung bei anderen Webservern, Lighttpd oder dem IIS, nicht ganz so trivial.

Erstellung einer Weiterleitung mit einem WordPress-Plugin

Wie bei jedem Plugin musst du diese Dinge beachten:

  • Du fügst mehr Code auf deiner Webseite ein. Das kann zu Verzögerungen führen und die Sicherheit beeinträchtigen.
  • Wenn eine Plugin gehackt wird, kann dieser Code deinen Server erreichen.
  • Plugins können den Eigentümer wechseln, was die zukünftige Stabilität oder den Support für dein Plugin verändern kann.
  • Wenn die Entwicklung eingestellt wird, kann das Plugin veraltet sein und du stehst vor einem Migrationsproblem, wenn du zukünftige Sicherheits- oder Kompatibilitätsprobleme vermeiden möchtest.
  • Wenn du das Plugin entfernst, können alle vorherigen Einstellungen und Einträge verloren gehen.

Ein WordPress-Plugin, das du in Betracht ziehen solltest, ist redirection.me. Es ist ein ausgereiftes und stabiles Plugin, das von vielen Menschen genutzt wird. Es ist kostenlos, es gibt keine kostenpflichtige Version und es bietet eine einfache Schnittstelle an, mit der man Weiterleitungen verwalten kann.

redirection.me-Benutzeroberfläche in WordPress
redirection.me-Benutzeroberfläche in WordPress

Video-Erklärung von Matt Cutts / Google zu diesem Thema (engl.)

Gibt es ein Limit für die Anzahl der (permanenten) 301-Weiterleitungen die ich auf meiner Seite einstellen kann?

SISTRIX Experten-Video

Weiterführende Informationen zu diesem Thema: