Damit auch alle Requests über HTTPS geregelt werden, habe ich über die .htaccess einen permanenten Redirect eingerichtet:
# BEGIN SSL Redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NC]
</IfModule>
# END SSL Redirect
Anfangs bekam ich Infinit-Redirects. Das lag an den Server-Einstellungen. Je nach Server sind nicht alle SSL-Variablen richtig gesetzt. Sollte das Beispiel oben nicht funktionieren versuche es mal mit dieser Condition: RewriteCond %{HTTPS} off
(Zeile 4 ersetzen).
Für SSL-Verbindungen hinter einem Proxy kannst du RewriteCond %{HTTP:X-Forwarded-Proto} =http
verwenden.
SSL in WordPress
In der wp-config.php
solltest du noch folgendes einfügen, um die native SSL Unterstützung von WordPress im Backend zu benutzen:
define('FORCE_SSL_ADMIN', true);
Außerdem habe ich in den allgemeinen WordPress-Einstellungen unter „WordPress-Adresse (URL)“ und „Website-Adresse (URL)“ die URLs auf https://[DEINE-SEITE]
geändert.
Noch einfacher per Plug-In & Mixed-Content Fehler
Sollte dein Browser Mixed-Content Fehler anzeigen, solltest du dir mal das Plug-In Really Simple SSL anschauen. Das behebt nicht nur die meisten Mixed-Content Fehler sondern auch andere Probleme, die WordPress mit SSL haben könnte.
Solltest du immer noch Mixed-Content Fehler angezeigt bekommen liegt das vermutlich an Bildern, die über den WordPress Editor hardcoded sind. Um das zu beheben führt leider kein Weg daran vorbei alle Posts nach diesen Bildern zu durchsuchen. Das geht am besten mit Search & Replace oder Better Search Replace. Letzteres hat in der kostenlose Variante zwar weniger Features, ersteres machte bei mir allerdings Probleme.
Als Suchmuster kannst du http://[DEINE-SEITE]/wp-content
benutzen. Als Tabelle reicht es wp_posts
zu durchsuchen. Damit werden nur die Pfade in Posts und Seiten geändert.
Beispiel:
Suche: http://christophheich.de/wp-content
Ersetze: https://christophheich.de/wp-content
Tabelle: wp_posts