301 Weiterleitungen bei der HTTPS-Umstellung korrekt einsetzen

Das unverschlüsselte HTTP-Protokoll gehört der Vergangenheit an und die großen IT-Unternehmen wie Google, Microsoft oder Mozilla forcieren die Verwendung von HTTPS immer mehr. Erst vor kurzem hat Mozilla einen HTTPS only mode implementiert, der den Zugriff auf unsichere HTTP-Resourcen komplett verweigert. Dank letsencrypt fällt auch die Ausrede, ein SSL-Zertifikat sei ein hoher Kostenpunkt, weg: die SSL-Zertifikate sind kostenlos. Wahrscheinlich der Hauptgrund, warum sich in den letzten 1 bis 2 Jahren HTTPS nahezu vollständig verbreitet hat:

HTTP vs. HTTPS Webseiten

Verbeitung HTTP vs. HTTPS: dank letsencrypt liefern viele Webseiten via HTTPS aus
(Bildquelle: transparencyreport.google.com/https/overview)

Wer nun zu der alten HTTP-Gattung gehört und nun eine Webseite vom alten HTTP auf HTTPS umstellen möchte, der wird den Rat "Nutzen Sie serverseitige 301 Weiterleitungen" des Suchmaschinen-Gigante Google befolgen, um keinen Ranking-Verlust in den Suchergebnisseiten zu erleiden. Das Ziel ist recht einfach: jede "alte" HTTP-URL soll auf die entsprechende "neue" HTTPS-URL weitergeleitet werden, so dass der Inhalt einer Webseite nur noch unter dem sicheren SSL geschützten HTTPS erreichbar ist.

Was sich einfach anhört, erfordert in der Praxis eine intensive Vorbereitung, was vor allem auf altgediente und große Webseiten mit vielen URLs zutrifft. Wer grundlegend jede HTTP-URL auf dessen HTTPS-Pendant umleitet, offeriert bei "kaputten" Links aktiv eine Empfehlung auf einen Inhalt, der nicht existiert. Suchmaschinen kann dies irritieren, wenn man sagt: "Hey, die richtige URL findest hier!" und man anschließed eine 404 Not Found Antwort erhält. Ähnlich schlecht ist es, wenn man eine Weiterleitungskette aktiviert, der Bot also über mehrere 301 Weiterleitung anstatt direkt zur entgültigen Ziel-URL geleitet wird. Auch hier kann es zum Ranking-Verlust kommen.

Richtig Weiterleiten mit 301 Redirect

Wie leitet man also richtig um? Die allerwichtigste Regel ist, dass eine alte URL

  • ohne Umwege (d.h. keine weiteren Redirects)
  • auf exakt eine neue URL (d.h. der neue Inhalt ist nur unter diesen URL erreichbar)

weitergeleitet wird. Hört sich einfach an, ist in der Praxis gar nicht so einfach. Wer bereits in der Vergangenheit Redirects verwendet hat (bspw. mittels htaccess Datei), muss prüfen, ob diese nicht in eine Weiterleitungskette oder noch schlimmer in 404 Not Found Seiten resultieren.

Folgendes Beispiel zeigt eine korrekte 301 Weiterleitung:

Korrekter Einsatz eines 301 redirect: alte http wird auf die richtige https Zieladresse weitergeleitet

Wird urlA.html unter dem alten HTTP aufgerufen, erfolgt eine 301 Weiterleitung auf die sichere HTTPS-Variante. Wichtig ist, dass exakt eine 301-Weiterleitung erfolgt und die Zielseite auch wirklich zur Verfügung steht (Status Code 200).

Fehlerhafte Weiterleitungen

Kommen wir nun zu den Don'ts. Um bei den Suchmaschinen keine Verwirrung zu stiften, sollte man niemals einen Fährte (301 redirect) legen, welche nicht direkt (301 Weiterleitungskette) oder gar nicht (404 Not Found) zum Ziel führt.

# 
# Nicht zu empfehlen:
#
# letsencrypt installiert
# eine Default-Weiterleitung von HTTP->HTTPS
#

<VirtualHost *:80>
  ServerName www.example.com
  [...]
 
  # LETSENCRYPT
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =example.com [OR]
  RewriteCond %{SERVER_NAME} =www.example.com
  RewriteRule ^ %{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
Der kostenlose SSL-Anbieter Letsencrypt bietet beispielsweise standardmäßig an, die Apache Vhost Konfiguration dahingehend zu verändern, dass alle einkommenden HTTP-Anfragen unmittelbar auf die HTTPS-Variante weitergeleitet werden. Diese Möglichkeit sollte man mit Bedacht einsetzen, da folgendes Problem auftreten kann:

Falsch: Weiterleitung mit Ziel auf eine nicht existierende URL (Status Code 404)

Die Weiterleitung erfolgt auf eine Ziel-URL, die nicht verfügbar ist. Da stellt sich sofort die Frage, warum man den Leser und den Crawler überhaupt dazu auffordert, diese nicht existierende Seite aufzurufen.

Wenn die Seite wirklich nicht existiert, sollte die Antwort sofort ein 404 sein. Alternativ kann der 301 Redirect auf eine andere verfügbare Seite erfolgen.

Des Weiteren sind auch Mehrfach-Weiterleitungen, sprich auf einen 301 Redirect erfolgt ein weiterer 301 Redirect, nicht gerne gesehen. Dieser Fehler tritt sehr schnell auf, wenn man in einer htaccess-Datei eine Weiterleitung eingerichtet hat, weil in der Vergangenheit Inhalt zu einer neuen URL verschoben wurde. Trägt man nun in der Apache Vhost Konfiguration eine harte HTTP->HTTPS Weiterleitung ein, tritt folgender Fall ein:

Weiterleitungs-Kette: die Ziel-URL wird über Umwege erreicht.

Das Problem: es erfolgt sofort eine Weiterleitung von HTTP auf HTTPS. Erst dann wird die htaccess-Datei ausgewertet und ein weiterer Redirect von der alten auf die neue URL veranlasst.

Dasselbe Phänomen tritt auf, wenn man seine Webseite nur noch unter der www-Version verfügbar machen möchte. Gerne wird ein Standard-Redirect in der Apache-Konfiguration eingetragen, der dann ein ähnliches Fehlverhalten wie bei der Grafik zuvor zeigt:

Typischer Fehler bei non-www auf www Umstellung. Es erfolgt immer ein unnötiger Redirect auf die http-Version.

Auch hier gilt die Lösung: es darf nur ein Redirect zur richtige Zielseite geben.

Analyse: Fehler Weiterleitungen erkennen

Es gibt viele Fehlerquellen bei der Verwendung von 301 Redirects und gut gemeint ist nicht immer gut gemacht. Bei großen Webseiten mit vielen Seiten ist daher ein Crawler sinnvoll, der alle Links auswertet und erkennt, ob eine Weiterleitung erfolgt. Hierbei kann analysiert werden, ob eine Weiterleitung grundsätzlich erforderlich ist und wenn ja, diese nicht auf eine weitere Weiterleitung folgt bzw. auf toten Content zeigt. Optimalerweise holt man sich professionelle Unterstützung in Form einer Online Marketing Agentur wie performanceliebe.de ein, da Fehler bei den Redirects zu drastischen Einbrüchen der Besucherzahlen und letztendlich auch Einnahmen entstehen können.

Zur Vorbereitung für die HTTPS-Umstellung auf PC-Erfahrung.de wurde ein Crawler auf PHP-basis programmiert, der diese Aufgabe erledigt. Eventuell wird der Quellcode dazu demnächst veröffentlicht, sofern Interesse daran besteht.

Crawler im Eigenbau: falsche Weiterleitungen werden sichtbar
Crawler im Eigenbau: falsche Weiterleitungen werden sichtbar

Alternativ kann man die Google Webmaster Tools aufsuchen, um Crawling-Probleme aufzuzeigen. Eine Analyse frei verfügbare Crawling Tools ist nicht Bestandteil dieses Artikels.

Zusammenfassung: typische Fehler vermeiden

Die Vorbereitung für eine HTTPS-Umstellung kann Tage und Wochen dauern, wenn es akribisch und sauber umgesetzt wird. Wichtigste Voraussetzung ist, dass man die internen Links analysiert und auf ihren Http Status Code prüft. Das mag auf den ersten Blick ein großer Aufwand sein, ermöglicht aber die Chance, die HTTPS-Umstellung ohne Ranking-Verlust durchzuführen. Gleichzeitig werden bereits kaputte und tote Links gefunden, die in diesem Atemzug korrigiert werden können.

Bei der Umstellung haben sich folgende Erkenntnisse ergeben:

  • Verwendet relative anstatt absolute Links (d.h. ohne Domain). Diese sind nach der Umstellung automatisch "migriert"
  • Generelle Weiterleitungen wie HTTP->HTTPS oder NON-WWW->WWW sollten an das Ende der htaccess Datei und nicht in die Apache VHost Datei geschrieben werden, so dass eigene Weiterleitungsregeln primär verarbeitet und Weiterleitungsketten vermieden werden.
  • Grundregel: maximal eine Weiterleitung
  • Grundregel: Ziel-URL muss unique und erreichbar sein
  • Ein Crawler zur Analyse der internen Links wird dringend empfohlen