Marcel Krüger

TIL: HTTPS Redirect done right

17. Oct. 2016

Update: Bitte diesen aktuelleren Beitrag beachten!

Durch einen Kommentar im Heise Forum, den ich auf dem Heimweg zufällig gelesen habe, habe ich gelernt, dass ich meine HTTPS redirects falsch mache. Man sollte keinen 302 (Found), sondern 301 (Moved permanently) Status für die Umleitung benutzen. Warum? Status 302 suggeriert dem Browser, dass der Inhalt, den er sucht, lediglich temporär unter einer anderen Adresse verfügbar ist. Der Browser soll weiterhin die Ursprungsadresse nutzen. Status 301 hingegen gibt dem Browser zu verstehen, dass der Inhalt umgezogen ist und er in Zukunft die neue statt der alten Adresse nutzen soll.

Apache Config

Es genügt im Dokumentenverzeichnis eine .htaccess Datei mit folgendem Inhalt anzulegen:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Ob alles funktioniert, kann mit curl gecheckt werden:

# curl -I dermarcel.de
HTTP/1.1 301 Moved Permanently
Date: Mon, 17 Oct 2016 17:28:46 GMT
Server: Apache Location: https://dermarcel.de/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

Apache config - So macht man's nicht

Vorher hatte ich in der Seitenkonfiguration ein Redirect. So macht man's nicht … :)

<VirtualHost *:80>
    ServerName www.dermarcel.de
    ServerAlias dermarcel.de
    Redirect / https://www.dermarcel.de
    DocumentRoot /var/www/wordpress
</VirtualHost>