WordPress : HTTP Weiterleitung auf HTTPS (301 redirect) via .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.

Ein Tutorial für WordPress Seitenbetreiber, wie ein SSL/TSL Zertifikat für HTTPS erstellt und in wenigen Minuten implementiert werden kann.

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

GL&HF

6 thoughts on “WordPress : HTTP Weiterleitung auf HTTPS (301 redirect) via .htaccess”

  1. Hallo karlos,

    Vielen Dank für diesen und viele andere Codeschnipsel zu der https Thematik,
    Eine Frage würde mich dann doch noch interessieren: Gibt es irgendwo eine Quelle, die sich mit der SSL Verschlüsselung auf WordPress Multisites mit Domain Mapping beschäftigt?
    Vor allem wenn die Multisite sich mit mehreren Domains und dazu noch unterschiedlichen Zuständen (sagen wir mal Primärblog ohne SSL, aber Subsites mit SSL) herumschlagen muss?

    • Das ist meines Erachtens unerheblich. Das SSL Zertifkat wird in der Apache Config geladen (lauschen auf Port 443) und dann weitergeleitet auf den Webspace. Für die jeweilige Domain musst Du in der WordPress DB in den Einstellungen die URL verändern. Laufen die verschiedenen Domains in unterschiedlichen Mysql Tables, krallt sich WordPress das passende. (Wenn alle Domains in der gleichen Tabelle sind, die search&replace nicht auf http, sondern auf den kompletten Domainnamen laufen lassen). Beim 301 Redirect über die .htaccess gibt es zwei Möglichkeiten. Die bessere ist bei ein Multisite Installation, die modrewrite Funktion direkt in die Apache Config Datei der jeweiligen Domain zu schreiben und nicht in die .htaccess auf dem Webspace. Klingt kompliziert, ist es aber gar nicht 🙂

  2. Ich hab das erstmal langsam mit einer Single-Site angehen lassen.
    War Null Problemo bei all-inkl (allerdings shared webhosting). Einfach eine Email an den Support mit der Bitte um Lets Encrypt Einrichtung auf dieser und jeder Domain (Plus Angabe der letzten 3 Zeichen beim Members-Passwort) und nach 25 Minuten kam die Vollzugsmeldung.

    Bei der Multisite mit Domain Mapping läuft ja alles erstmal auf die Primärinstallation ein und wird intern durch das MU Domain Mapping Plugin erst auf die “gewünschte” Domain umgeschrieben. Also weiß ich nicht, ob nicht schon die Primäre Domain ein SSL braucht, nicht dass es zu gemischten Inhalten kommt.

  3. Gute Frage. Ich verwendet keine MU Installationen mehr. Zu fehleranfällig und schwer standisierbar. Als kleiner Tipp für einfache “Multiuser” Projekte, in der wp-config einfach die DB getrennt ansteuern:

    # $table_prefix = ‘wp_’;
    $table_prefix = ereg_replace(‘^(www\.)’, ”, $_SERVER[‘HTTP_HOST’]);
    $table_prefix = ereg_replace(‘\.’, ”, $table_prefix);
    $table_prefix = ereg_replace(‘\-‘,”, $table_prefix);
    $table_prefix = $table_prefix . ‘_’;

Comments are closed.