WordPress von HTTP auf HTTPS umstellen

Von http auf httpsImmer mehr WordPress-Seiten verwenden die SSL-Verschlüsselung, und für einen Onlineshop ist sowas Pflicht! Allerdings reicht es nicht, das SSL-Zertifikat zu bestellen, du musst es auch zuweisen und deine URL umstellen, von HTTP auf HTTPS. Beispiel:

  • Alte URL: http://rabatte.shop
  • Neue URL: https://rabatte.shop

In diesem Tutorial erkläre ich dir vier Dinge:

  • Die Bestellung eines SSL-Zertifikats
  • Die Zuweisung von Domain und SSL-Zertifikat beim Provider
  • Umstellung von HTTP zu HTTPS innerhalb WordPress
  • Weiterleitung von der alten auf die neue URL über einen 301-Redirect

Los geht’s!

SSL-Zertifikat bestellen

Wenn du keine Erfahrung mit SSL-Zertifikaten hast, dann bestelle das Zertifikat über deinen Provider. Bei 99% der Provider ist die Bestellung eines SSL-Zertifikats überhaupt keine Problem. Unrühmliche Ausnahme ist United Domains (Stand Oktober 2017). Bei allen anderen bekannten Providern ist ein SSL-Zertifikat schon im Hostingpaket intergriert oder wenigstens zubuchbar. Bei Problemen, zum Beispiel mit der HT-Access-Datei, kannst du auf den Provider-Support zurückgreifen.

SSL-Zertifikat der Domain zuordnen

SSL und Domain zuweisen

Was du in der Regel selbst machen musst, ist die Zuweisung des Zertifikats zu deiner Domain. Im Beispiel oben siehts du, wie es bei Strato funktioniert. Im Hostingpaket sind mehrere Domains enthalten, aber nur ein inklusives SSL-Zertifikat. Zugewiesen wurde das Zertifikat zur Domain rabatte.shop.

URL -Basis in WordPress von HTTP auf HTTPS umstellen

In WordPress https eingeben

 

Jetzt wird die URL innerhalb WordPress umgestellt. Wechsle vom Kundencenter des Providers zu WordPress. Logge dich in dein Backend ein. Klicke auf Einstellungen > Allgemein.
In den Feldern WordPress-Adresse (URL) und Website-Adresse (URL) änderst du nun http:// zu https://

  • Vorher -> WordPress-Adresse (URL): http://rabatte.shop
  • Nachher -> Website-Adresse (URL): https://rabatte.shop

HTTPS testen

SSL grünes Schloss

Rufe deine auf HTTPS umgestellte Seite auf. Das grüne Schlösschen zeigt an, dass die Seite mit SSL verschlüsselt ist und via HTTPS aufgerufen wird.

Interne URLs ersetzen

Better Search Replace
Nun ist zwar die URL-Basis umgestellt, aber innerhalb der Datenbank verbergen sich noch alte Links, die nach der Umstellung nicht mehr funktionieren! WordPress verwendet nämlich auch absolute Links, zum Beispiel für Bilder. Wenn du dein Projekt schon länger laufen hast, willst du die nicht alle manuell umstellen, oder? Keine Sorge, diese Arbeit erledigt das Plugin Better Search Replace. Es ist kostenlos, du installierst es ganz normal über dein WordPress-Backend.

Suchen und ersetzen

Suchen und ersetzen
Nach der Aktivierung versteckt sich Better Search and Replace unter dem Menüpunkt Werkzeuge.

Vorsicht: Du bist jetzt kurz davor, in der Datenbank herumzuschrauben? Dann solltest du vorher noch ein Backup der Datenbank anlegen! Man weiß ja nie 😉 ,
Wie arbeitet das Plugin? Es ersetzt in der WordPress-Datenbank eine Zeichenkette (Ansammlung von Wörtern, Links und anderem Zeugs) durch eine andere Zeichenkette. Bei der Umstellung von HTTP zu HTTPS sind es die Links, die ersetzt werden müssen. Im Beispiel wurde eingegeben:

  • Bei Suchen nach: http://rabatte.shop
  • Bei Ersetzen durch: https://rabatte.shop

Darunter ist noch ein Feld, bei dem du die betroffenen Tabellen deiner Datenbank auswählen musst. Wähle mit der Tastenkombination Strg A alle Tabellen aus!
Die Checkboxen bei Groß- und Kleinschreibung ignorieren? und bei auch GUIDs ersetzen lässt du deaktiviert. Dann nutze die Möglichkiet zum Testlauf. Hat alles geklappt, entferne das Häkchen in der Testlauf-Checkbox und führe den Vorgang noch einmal durch. In der Auswertung erhältst du Informationen zu den aktualisierten Links.

Check mit alten URLs

Nun führe einen URL-Check durch. Werden jetzt alle URLs via HTTPS aufgerufen? OK. Allerdings kann es sein, dass sich die Domain parallel dazu auch noch über die alte URL aufrufen lässt, also über HTTP:

  • http://rabatte.shop

Was tun? Um einen Mischbetrieb zwischen verschlüsselten und unverschlüsselten Seiten zu vermeiden, ist eine Weiterleitung via HT-Access nötig, ein sogenannter 301-Redirect.

Weiterleitung im Kundencenter des Providers vornehmen

SSL erzwingen
Einige Provider bieten die Weiterleitung per Checkbox an. Logge dich dazu in das Kundencenter ein, suche auf den Hilfenseiten nach „HTTPS erzwingen“ und veranlasse den Redirect im Kundencenter.

HT-Access mit 301-Weiterleitung ergänzen

Alternativ kannst du auch deine HT-Access-Datei mit einer 301-Weiterleitung ergänzen.
Angelegt wurde die HT-Access in Wordspress mit der Umstellung auf suchmaschinengerechte Permalinks, und im Laufe der Konfiguration sind möglicherweise einige Einstellungen hinzugekommen. Deshalb: Sichere deine Datei .htaccess, bevor du Ergänzungen vornimmst!

HT Access sichern

Die Datei .htaccess befindet sich im Wurzelverzeichnis von WordPress. Verbinde dich über deinen FTP-Client mit dem Server und rufe das Wurzelverzeichnis von WordPress auf, also die unterste Ebene. Da müsste nun eine Datei mit Namen .htaccess auftauchen. Ist dies nicht der Fall, dann sie ausgeblendet, und du musst Ausgeblendete Dateien anzeigen aktivieren.
Nun öffne die Datei .htaccess in einem Editor. Der Inhalt hängt davon ab, welche Einstellungen du in WordPress vorgenommen hast. Denkbar ist dieser Code:

# 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

301-Weiterleitung hinzufügen

Zur Erzwingung der Weiterleitung auf HTTPS ergänzt du nun diesen Code:


RewriteEngine On
RewriteCond %{HTTP_HOST} !^hieristmeinewebsite\.de$ [NC,OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://hieristmeinewebsite.de/$1 [R=301,L]

Statt hieristmeinewebsite.de fügst du natürlich deine eigene URL ein! 😉

HT-Access mit 301-Weiterleitung

Nach der Ergänzung ist die HT-Access um zwei Zeilen gewachsen, aber nichts wurde überschreiben:

# BEGIN SSL-Weiterleitung
RewriteEngine On
RewriteCond %{HTTP_HOST} !^hieristmeinewebsite\.de$ [NC,OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://hieristmeinewebsite.de/$1 [R=301,L]

# END SSL-Weiterleitung

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Lade nun die aktualisierte HT-Access-Datei in das Wurzelverzeichnis hoch. Anschließend gib in die Adresszeile deines Browsers noch einmal die alte URL mit http:// ein und probiere, ob die Weiterleitung auf https:// funktioniert und das grüne Schlösschen erscheint.
PS: Hattest du das aktive Theme irgendwann mal im Quellcode editiert und einen Link eingesetzt oder modifiziert, beispielsweise in der Datei functions.php? Weil Better Search Replace nur innerhalb der Datenbank tätig wird, musst du die betroffene Datei wiederum manuell aktualisieren!

12 Gedanken zu „WordPress von HTTP auf HTTPS umstellen

  1. Hallo Bernd.

    Toller Beitrag. Aber Folgendes Problem:

    Die Weiterleitung auf https funktioniert einwandfrei wenn ich die Startseite im Browser eingebe. Auch wenn ich dann von der Startseite zu einer Unterseite wechsel, wird die Seite korrekt auf https weitergeleitet.

    Aber: Wenn ich nicht die Startseite, sondern eine Unterseite DIREKT in den Browser eingeben, dann leitet es nicht auf https weiter, sondern ruft die Seite unter http auf… (z.B. http://autovermietung-schumacher.de/impressum)

    Habe ich etwas falsch gemacht? Ich bin genau nach Anleitung vorgegangen.

    LG Denis

        • Dann müsste das hier als Zusatz in deiner .htaccess stehen:

          RewriteEngine On
          RewriteCond %{SERVER_PORT} !=443
          RewriteRule ^(.*)$ https://autovermietung-schumacher.de/$1 [R=301,L]

          • Alles versucht. So sieht derzeit meine .htaccess aus:

            # BEGIN WordPress

            RewriteEngine On
            RewriteBase /
            RewriteRule ^index\.php$ – [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]

            # END WordPress

            # BEGIN SSL-Weiterleitung
            RewriteEngine On
            RewriteCond %{SERVER_PORT} !=443
            RewriteRule ^(.*)$ https://autovermietung-schumacher.de/$1 [R=301,L]
            # END SSL-Weiterleitung

          • Hm, seltsam… ich gehe davon aus, dass die .htaccess auf der richtigen Ebene liegt. Dann schicke deine .htaccess an den 1&1-Support und frage, was da los ist.. mehr fällt mir jetzt leider auch nicht ein…

      • Problem gelöst:

        Die Weiterleitung muss als erstes stehen! Also nicht:

        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ – [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

        RewriteCond %{HTTP_HOST} !^autovermietung-schumacher\.de$ [NC,OR]
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^(.*)$ https://autovermietung-schumacher.de/$1 [R=301,L]

        Sondern so:

        RewriteEngine On
        RewriteCond %{HTTP_HOST} !^autovermietung-schumacher\.de$ [NC,OR]
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^(.*)$ https://autovermietung-schumacher.de/$1 [R=301,L]

        RewriteBase /
        RewriteRule ^index\.php$ – [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

        Jetzt werden auch die Unterseiten, wenn ich sie ohne https eingebe, weitergeleitet.

          • So wäre es jetzt perfekt:

            # BEGIN SSL-Weiterleitung
            RewriteEngine On
            RewriteCond %{HTTP_HOST} !^autovermietung-schumacher\.de$ [NC,OR]
            RewriteCond %{SERVER_PORT} !^443$
            RewriteRule ^(.*)$ https://autovermietung-schumacher.de/$1 [R=301,L]

            # END SSL-Weiterleitung

            # BEGIN WordPress

            RewriteEngine On
            RewriteBase /
            RewriteRule ^index\.php$ – [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]

            # END WordPress

            Setze ich den Weiterleitungscode unter # END WordPress, dann klappt es z.B. nicht.

            Liebe Grüße und schönen Abend 😉

Kommentar verfassen