WordPress: Wechsel von HTTP zu HTTPS ganz einfach

Seit geraumer Zeit ist es quasi ein Standard, seine Website mit einem SSL-Zertifikat zu versehen und die Verbindungen zum Webserver entsprechend zu verschlüsseln. Damit sind nicht nur Online-Shops gemeint, sondern alle Websites und damit auch WordPress Websites.

Warum überhaupt https?

Es gibt mehrere Gründe dafür:

  • Google hat angekündigt Websites mit SSL in den Ergebnissen zu bevorzugen
  • Die meisten Browser kennzeichnen Websites ohne SSL als unsicher – ein Besucher kann dadurch verunsichert werden

Wenn man schon eine WordPress Website ohne https hat, sollte man überlegen, ein Upgrade durchzuführen – schließlich ist ein SSL-Zertifikat heute meist kostenlos (z. B. Let’s Encrypt). Es liegt allerdings am Provider, die Einrichtung eines Zertifikats zu ermöglichen.

Bei WordPress ist die Umstellung nicht schwierig, aber dennoch nicht gerade intuitiv. Im Bereich „Einstellungen“ > „Allgemein“ gibt es die Möglichkeit die WordPress URL (WordPress Installations-URL) und die Website-Adresse (Adresse wie sie im Browser aufgerufen wird) zu definieren. Ich gehe nicht näher darauf ein, warum es zwei URLs gibt, ich gehe davon aus, dass die Einstellung einfach stimmt und in beiden Zeilen das selbe steht, z. B. http://wwww.meine-website.tld.

Einfach https anstatt http in den WordPress-Einstellungen reicht nicht

Wer an der Stelle von http://wwww.meine-website.tld einfach https://wwww.meine-website.tld schreibt, wird nicht glücklich. Denn diese Änderung ersetzt tatsächlich nur die beiden Einträge in der Datenbank. Alle anderen Links, wie z. B. Links zu Medien werden nicht geändert. Also nicht machen!

Vielleicht hilft da ein Plugin?

Tatsächlich gibt es Plugins, die einem helfen, wie z. B. das kostenlose Plugin „Really Simple SSL„. Das Schöne an diesem Plugin (wie der Name es andeutet) ist die Einfachheit. Installiert und aktiviert prüft es ob das SSL-Zertifikat auch eingerichtet und, bietet an mit einem Klick, die Website auf HTTPS zu ändern. Ggf. in den Einstellungen des Plugins noch die Funktion einrichten, HTTP automatisch zu HTTPS weiterzuleiten und so hat man im Prinzip das Problem schon gelöst.

Vor- und Nachteil der Lösung mit dem Plugin

  • Vorteil: Really Simple SSL ist einfach und schnell eingerichtet (und kostet nichts). Als Nutzer braucht man eigentlich keine besonderen Kenntnisse.
  • Nachteil: es wird ein Plugin genutzt wo eigentlich keins benötigt wird.

HTTP zu HTTPS mit WP CLI

Die richtigere Methode eine WordPress Website auf HTTPS umzustellen besteht darin, alle Links in der Datenbank umzuschreiben. Damit serialisierte Datenbank-Inhalte nicht kaputt gehen, sollte man die Umschreibung nicht einfach auf einen SQL-Dump mit Suchen & Ersetzen durchführen. Dazu gibt es WP CLI: mit WP CLI lässt sich eni Suchen & Ersetzen direkt auf der Live-Datenbank ausführen.

Um WP CLI nutzen zu können, muss der Provider einen SSH Zugang zu der WordPress-Instanz anbieten. Einmal über SSH angemeldet und im Wurzelvereichnis, können Sie diesen Befehl ausführen:
wp search-replace --all-tables-with-prefix "http://www.meine-website.tld" "https://www.meine-website.tld"

Sollten Sie „root“ sein, dann muss der Aufruf mit „sudo -u <user>“ (user ist entweder www-data oder der Inhaber der Dateien in dem Vereichnis) ergänzt werden, das ergibt also:
sudo -u <user> wp search-replace --all-tables-with-prefix "http://www.meine-website.tld" "https://www.meine-website.tld"

In manchen Fällen muss zusätzlich diese Variante ausgeführt werden:
wp search-replace --all-tables "http://www.meine-website.tld" "https://www.meine-website.tld"
Diese Option ist für den Fall, dass Links in allen Tabellen zu ersetzen sind, auch solche, die eventuell nicht zu der Installation gehören.

Hier gibt es mehr Informationen zu den Optionen für den wp search-replace Aufruf:
https://developer.wordpress.org/cli/commands/search-replace/

Achtung: bevor Sie irgendwelche Links ersetzen, sollten Sie ein Backup Ihrer WordPress Website erstellen.