HTTP to HTTPS: Alle URLs einer Website auf die SSL Version umleiten

Bereits vor einigen Tagen habe ich auf die Möglichkeit und Wichtigkeit des SSL Protokolls für Websites hingewiesen. Wie dort geschrieben ist das gar keine große Sache, aber der Teufel steckt möglicherweise im Detail. Dieser Artikel zeigt, wie man die notwendigen Umleitungen korrekt einrichtet.

Ich hatte vor kurzem alle unsere Websites auf HTTPS umgestellt und mich gewundert, warum die Seiten trotzdem noch per HTTP erreichbar waren. Eigentlich hatte ich alle Einträge in der Datenbank geändert und es sollte nicht mehr möglich sein. Ich hatte auch eine entsprechende Umleitung in der .htaccess eingerichtet. Trotzdem konnte man unseren Blog beispielsweise unter https://michaeloeser.com/blog ebenso erreichen, wie unter https://michaeloeser.com/blog, obwohl die HTTP Variante eigentlich umgeleitet werden sollte.

Eintrag in die .htaccess

Vorab sei erwähnt, dass jeder Fehler beim Editieren der .htaccess zu massiven Problem bis hin zur Nicht-Erreichbarkeit der Website führen kann. Hier ist also Vorsicht geboten und man sollte einigermaßen wissen, was man tut!

Der entsprechende Eintrag in der .htaccess zur Umleitung von HTTP auf HTTPS schaut zunächst mal so aus:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Hierbei wird davon ausgegangen, dass ein entsprechender Modul-Eintrag „mod_rewrite.c“ bereits in der .htaccess vorhanden ist. Das ist in der Regel bei WordPress Sites, die „lesbare“ Permalinks verwenden, der Fall. In der .htaccess findet man dann beispielsweise einen solchen Eintrag:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Nun muss dieser Eintrag um die HTTPS Umleitung ergänzt werden. das schaut dann z.B. so aus:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END Redirect HTTP to HTTPS
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Die #-Zeichen dienen übrigens dazu, einen Kommentar zu hinterlassen, damit man den Code ggf. besser lesen kann. Diese Zeilen werden dann von der .htaccess als Kommentarzeilen ohne weitere Funktion erkannt.

Wichtig: Der Eintrag sollte ganz am Anfang der .htaccess Datei stehen. Bei mir hat die Umleitung nicht funktioniert, wenn der Eintrag weiter unten steht. Danke an Michael Weichselgartner für den Hinweis. Die Umleitungsregel folgt direkt nach:

RewriteEngine On

Danach sollte die Umleitung einer beliebigen URL Ihrer WordPress Website von HTTP nach HTTPS zuverlässig funktionieren.

Wenn Ihnen das jetzt zu kompliziert ist, wenden Sie sich einfach an uns. Wir unterstützen Sie gerne bei der Umstellung.