Weiterleitungen

Weiterleitungen sind eine praktische Einrichtung, etwa wenn sich die Struktur einer Website ändert und so neue Ordner- und/oder Dateinamen fällig werden. Wobei sich ändernde URLs recht nervig sein können – und weder Ihre Nutzer noch Suchmaschinen wirklich erfreuen.

Der Web-„Erfinder“ Tim Berners-Lee hat diese Thematik bereits 1998 in einem wunderschönen Artikel mit dem noch schöneren Titel Cool URIs don’t change dargelegt. Theoretisch, so sagt Berners-Lee, gibt es keinen Grund, dass sich die URLs eines Dokuments ändern muss. Denn der Eigentümer einer Domain kann unterhalb seiner Domain den Namensraum (also die Order- und Dateinamen) beliebig festlegen und nutzen. Typische Gründe, die für einen URL-Wechsel angegeben werden, sind fast immer Gründe, die Berners-Lee zufolge leicht umgangen werden können. Oder hätten vermieden werden können, wenn der Webmaster zu Beginn etwas Verstand in die Struktur seiner URLs gesteckt hätte. (siehe auch: URI vs. URL.)

Da Sie hier immer noch lesen, gehören Sie wohl zur Mehrheit der Webmaster, die hin und wieder uncoole URLs verwenden und um Weiterleitungen nicht rumkommen.

Es gibt prinzipiell zwei Arten von Weiterleitungen:

HTTP-Weiterleitungen
Das sind Weiterleitungen, die im HTTP-Protokoll definiert wurden und somit von jedem HTTP-Client (egal ob ein moderner Browser oder ein Suchmaschinen-Robot) verstanden werden. Diese Art von Weiterleitungen werden manchmal auch Server-Weiterleitungen genannt, da sie durch einen Header in der Antwort des Webservers gesteuert werden.
Client-Weiterleitungen
Diese Art der Weiterleitung funktioniert nur, wenn der Client in der Lage ist, die Weiterleitungsanweisung zu interpretieren. Da es sich dabei nicht um eine Eigenschaft handelt, die im HTTP-Protokoll definiert wurde, führen auch nicht alle Clients diese Weiterleitung aus. So fallen etwa JavaScript-Weiterleitungen in diese Kategorie; solche Weiterleitungen führt ein Client nur dann aus, wenn er JavaScript interpretieren kann – und wenn die JavaScript-Funktionalität auch eingeschaltet ist.

HTTP-Weiterleitungen richtig einsetzen

An dieser Stelle soll der Blick auf HTTP-Weiterleitungen gerichtet werden. Zu den beiden wichtigsten Arten der Client-Weiterleitung sei auf die entsprechenden Artikel verwiesen: JavaScript-Weiterleitungen und Weiterleitung per Meta-Refresh-Tag.

Wenn Sie also Weiterleitungen zu sinnvollen Zwecken, etwa nach einem Website-Relaunch, einsetzen möchten, so sind HTTP-Weiterleitungen der korrekte Weg. Da diese Weiterleitungen von jedem HTTP-fähigen Client erkannt werden, sind natürlich auch Suchmaschinen-Crawler in der Lage, solche Weiterleitungen zu erkennen. Haben Sie also die Pfade in Ihrer Website neu organisiert, so sollten Sie von den alten Adressen, die in vielen Suchmaschinen noch verzeichnet sind und manchmal auch von fremden Websites verlinkt sind, eine Weiterleitung auf die neue, nun korrekte Adresse setzen. Das hilft Ihnen, keine Nutzer zu verlieren und signalisiert gleichzeitig den Suchmaschinen, dass sich die URL der Webseite geändert hat. Damit wird in den meisten Fällen die neue Adresse nicht nur schneller aufgenommen, sondern Suchmaschinen berücksichtigen auch die Links, die auf die alte URL zeigen, für die Bewertung der neuen Adresse.

301 oder 302

Allerdings kommt es hier auf ein kleines Detail an. Es gibt zwei verschiedene Arten der HTTP-Weiterleitung, die sich im übergebenen Statuscode unterscheiden. Während der Code 301 für Moved Permanently steht, bedeutet 302 Moved Temporarily. 301 signalisert also dem Client, dass die angeforderte URL veraltet ist und künftig immer die neue angefordert werden soll; 302 hingegen heißt, dass die alte URL durchaus weiterhin gültig ist und nur derzeit die gewünschte Webseite unter einer anderen Adresse aufgefunden werden kann.

Während für einen menschlichen Nutzer diese Unterscheidung nicht so bedeutend ist, kann sie für die Auffindbarkeit einer Website in Suchmaschinen entscheidend sein. Denn Suchmaschinen nutzen diesen Statuscode um zu ermitteln, ob die weiterleitende URL im Datenbestand verbleiben soll oder dort gelöscht wird. Ein Code 302 sagt nun der Suchmaschine: „Lass‘ die Adresse bitte in deiner Datenbank, denn sie wird irgendwann wieder benutzt werden.“ Das führt nun aber dazu, dass die Suchmaschine die alte und die neue Adresse parallel weiterführt – und somit zwei URLs mit demselben Inhalt enthält. Diese Art der Spiegelung, im Fachjargon Duplicate Content genannt, kann sogar zum Ausschluss aus dem Google-Index führen. Sie sollten deshalb bei Änderungen an Ihrer Website, die Weiterleitungen erfordern, diese Weiterleitungen mit dem Statuscode 301 ausführen.

mod_alias

Wie aber lassen sich Weiterleitungen einfach realisieren? Das hängt in erster Linie vom eingesetzten Webserver und dessen Konfiguration ab. Wenn Sie einen Apache in der üblichen Konfiguration nutzen, und die Marktanteile besagen, dass Sie das mit ziemlicher Wahrscheinlichkeit tun, lässt sich eine Weiterleitung am einfachsten über eine .htaccess-Datei erledigen. Diese Dateien ermöglichen Konfigurationseinstellungen für einzelne Domains oder gar nur einzelne Unterordner vorzunehmen und können sehr einfach für Weiterleitungen eingesetzt werden.Dazu muss allerdings das Apache-Modul mod_alias aktiviert sein, was meistens der Falls ist. Hier sehen Sie ein Beispiel:

Redirect 301 /old/ http://www.example.com/new/

Wichtig ist, dass das Weiterleitungsziel als absolute URL mit führendem http:// anzugeben ist. Viele Clients akzeptieren zwar auch eine relative URL als Zielangabe, allerdings entspricht dies nicht der HTTP-Definition.

mod_rewrite

Alternativ lassen sich Weiterleitungen auch über das Modul mod_rewrite erledigen. Da dieses Modul deutlich flexibler ist, ist auch die Rechenlast für den Server größer; dies führte dazu, dass mod_rewrite bis vor etlichen Jahren nicht von allen Providern bereitgestellt wurde. Inzwischen gehört das Modul aber zur Grundaustattung eines jeden vernünftig konfigurierten Webservers, denn Systeme wie WordPress setzen darauf, um schöne URLs (Stichwort „Permalinks“) zu erzeugen.

Am Beispiel ist zu sehen, dass die mod_rewrite-Lösung komplizierter ist. Das liegt daran, dass hier Platzhalter, genauer: Reguläre Ausdrücke, benutzt werden. Damit lassen sich aber sehr komplexe Weiterleitungsregeln erstellen und komplette Relaunches können so mit wenigen Zeilen in der .htaccess-Datei erledigt werden.

RewriteEngine On
Redirect 301 /old/
RewriteRule ^old/.*$ /new/$1 [R=301]

Wenn Sie Ihre Weiterleitung auf diese Art ausführen, sollte Google schnell bemerken, dass Sie Ihre Website umgebaut haben und die neuen Adressen in seine Datenbank aufnehmen.

Weiterer Lesestoff:
Redirecting with mod_rewrite
Apache Tutorial: .htaccess files