HTTP Weiterleitung auf HTTPS (301 redirect) via .htaccess

htaccess

Worum geht es bei HTTPS / SSL / TLS?

SSL (Secure Sockets Layer) oder zwischenzeitlich besser und korrekter TLS (Transport Layer Security) , ist ein Verschlüsselungsprotokoll zur sicheren Datenübertragung zwischen zwei Punkten im Internet. TLS Verschlüsselung wird heutzutage vorrangig bei der Benutzung eines Browsers (HTTPS in URL) eingesetzt, um die Daten zwischen Surfer und Server sicher und verschlüsselt zu übertragen.

Webseitenbetreiber können ihren Server mit einem SSL Zertifikat bei einer Zertifizierungsstelle registrieren und ihren Webserver so konfigurieren, dass Besucher der Webseiten das sichere Protokoll nutzen können. Wurde bisher eine unverschlüsselte Übertragung genutzt oder soll die unverschlüsselte Übertragung automatisch auf eine sichere umgestellt werden, sobald der Besucher die Seit aufruft, dann funktioniert das wie folgt.

Mit dem folgendem Befehl kann man HTTP Protokoll Aufrufe seiner Webseite auf die SSL Variante HTTPS umleiten.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R=301,L]

Auf diese Weise wird eine komplette Seite von HTTP auf HTTPS umgeleitet (301 redirect).

Alternativ geht auch:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Es ist ebenso möglich eine oder einzelne Seiten von http auf https weiterzuleiten. Die Weiterleitung von HTTP auf HTTPS erfolgt ebenfalls über die rewrite rule:

RewriteRule ^seite1(.*) https://%{SERVER_NAME}/seite1$1 [R=301,L]

Warum 301-Weiterleitung?

Eine 301-Weiterleitung übermittelt den HTTP-Statuscode 301 Moved Permanently (Das heisst soviel wie „Dauerhaft verschoben“). Der Webserver antwortet dem anfragenden Browserclient, z.B. dem Webbrowser oder dem Google-Bot, wenn die angeforderte Ressource (z.B. eine URL, ein HTML-Dokument) dauerhaft verschoben wurde (das sogenannte „moved permanently“) und ab nun unter einer neuen URL erreichbar sein soll, mit einem HTTP-Statuscodes 301. Die Übermittlung eines 301-Statuscode bedeutet, dass der Webserver alle Anfragen auf eine Quell-URL auf die neue Ziel-URL weiterleitet.

Beispiel: Was passiert bei der 301-Weiterleitung?

  1. Der Google-Bot will die Datei „beispiel.html“ der Domain „tutorial.de“ abrufen
  2. Der Google-Bot sendet eine Anfrage an den Webserver der Domain „tutorial.de“, mit dem Wunsch die Datei „beispiel.html“ auszugeben
  3. Der Webserver weiß, dass sich die Datei „beispiel.html“ nicht mehr unter der URL „tutorial.de/beispiel.html“ zu finden ist. Auch weiß der Webserver, dass eine 301-Weiterleitung für die Datei „beispiel.html“ zu „neuesbeispiel.html“ besteht
  4. Der Webserver teilt dem Google-Bot den HTTP-Statuscode 301 (Moved Permanently) mit und verweist auf die neue URL „tutorial.de/neuesbeispiel.html“
  5. Der Google-Bot versteht, dass der Inhalt der Datei „tutorial.de/beispiel.html“ zukünftig unter der URL „tutorial.de/neuesbeispiel.html“ zu finden ist und indiziert die neue URL anstatt der alten URL.

Hier noch ein Video von Matt Cutts (Google) der den 301 redirect erklärt …