Umzug auf HTTPS

HTTPS – das nächste große Ding. Google will es und ich wollte es auch. Leider steckt Let’s Encrypt noch in der Public-Beta-Phase und du musst es selbst auf dem Server installieren – in einem normalen Hosting-Paket und mit mäßigen Apache-Kenntnissen ist das gar nicht so einfach. Also habe ich ein SSL-Zertifikat bei meinem Provider gekauft. Und damit habe ich den sprichwörtlichen Umzug auf HTTPS mit Pauken und Trompeten angestoßen.

Umzug mit Pauken und Trompeten

Umzug auf HTTPS in WordPress

WordPress umzustellen ist vergleichsweise trivial: In den Einstellungen die Domain ändern und dann in der Datenbank per SQL-Statement die Links umschreiben. Fertig!

UPDATE wp_posts SET guid = replace(guid, 'http://www.ihredomain.de','https://www.ihredomain.de');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.ihredomain.de', 'https://www.ihredomain.de');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.ihredomain.de','https://www.ihredomain.de');

Fertig? Leider nicht, denn jetzt geht die Arbeit erst richtig los: Es wurden beim Umzug auf HTTPS nicht alle Links erfasst und das bedeutete, dass ich die Stellen ausfindig machen musste, an denen noch http-Links stehen. Das konnten beispielsweise Einträge in einem Text-Widget, der Pfad zu Logo und Favicon oder von Plugins gesetzte URLs sein. Puh, diese Suche konnte langwierig werden – und wurde es auch.

Für die Anzeige des grünes Schlosses darf es keine Vermischung von verschlüsselten und unverschlüsselten Inhalten geben. Bisher gab es lediglich ein graues Schloss mit einem Warndreieck, was sehr ungünstig ist. Moderne Browser weisen den Besucher einer Webseite ausdrücklich darauf hin, dass hier unter dem Label einer verschlüsselten Seite auch unverschlüsselte Inhalte zu finden sind. Das wirkt eher abschreckend als vertrauenserweckend.

VG-Wort Zählpixel

Beim Umzug auf HTTPS habe ich mir in der Website einer Netzwerkkollegin einen Wolf gesucht. Sie verwendet nämlich den von der VG-Wort zur Verfügung gestellten Zählpixel – ein 1×1 Pixel großes Bild (img), dessen Pfad normalerweise mit http ausgezeichnet ist. Das winzige Element zeigte sich erst nach ausgiebiger Inspektion des Quellcodes. Es gibt aber auch einen verschlüsselten Server bei der VG-Wort: Der Domain-Pfad vor der Zähl-ID muss dann zwingend https://ssl-vg03.met.vgwort.de/na/ lauten. Im Blog von Daniel Weihmann habe ich eine hilfreiche Anleitung dazu gefunden.

Das grüne Schloß als Kennzeichnung für verschlüsselte Datenübertragung
Endlich das grüne Schloss. Hurra!

So aufgeschlaut stellte ich dann fest, dass in dem von mir irgendwann mal eingerichteten Plugin Prosodia VGW eine Einstellung existiert, mit der ich auf den oben genannten https-Server umstellen konnte. Diese Aktion erfasst dann gleich alle genutzten Zählpixel und stellt den Pfad um – sehr hilfreich!
Und jetzt war es endlich geschafft, das Schloss war grün.

301-Redirect für Google & Co.

Um Suchmaschinen von der Umstellung zu informieren, empfiehlt sich dann noch den 301-Redirect (dauerhaft umgezogen) in die .htaccess-Datei zu schreiben. Den passenden Codeschnipsel und weitere nützliche Informationen zum Thema fand ich in einem Artikel bei ambranet.de. Wer die Webmastertools von Google nutzt, sollte nun auch zwei Einträge mit https hinzufügen – einen mit einen ohne www. Der Verifizierungscode wird dabei automatisch erkannt. Die XML-Sitemap sollte man aktualisieren und dann in die neuen Einträge hochladen. Und dann heißt es nur noch auf die Indizierung warten!
Für Google-Analytics muss die geänderte Domain ebenfalls eingetragen werden. Im Fall einer Komplettumstellung ist das sehr einfach, in den Einstellungen muss nur die Standard-URL umgestellt werden. Alles super, oder?

Keine Facebook-Likes mehr nach dem Umzug auf HTTPS

Leider nicht! Facebook fand die Umstellungsaktion gar nicht lustig, alle Likes waren futsch, die Arbeit von Jahren hin. Für meine Kollegin eine Katastrophe. HTTP ist nämlich nicht gleich HTTPS. Diese URLs werden wie unterschiedliche Domains betrachtet.

Im Web habe ich dazu leider nicht viel gefunden – und in dem wenigen gingen die Meinungen auch noch auseinander, ob Facebook Likes und Shares überträgt oder nicht. Erst mal waren sie definitiv nicht mehr da. Ein 301-Redirect ist dafür auch nicht die Lösung. Facebook transferiert Likes nur auf die neue Seite, wenn die alte noch erreichbar ist. Der empfohlene Redirect verhindert aber deren Erreichbarkeit.
Nach längerer Suche fand ich im Forum von Stackoverflow doch eine Lösung: Ein zusätzlicher Eintrag in der .htaccess nimmt den Facebot von der Umleitung aus. Der Eintrag sieht dann wie folgt aus:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Open Graph-Angaben anpassen

Das ist leider noch nicht alles: Denn Facebook benötigt auch noch die Angabe der alten URL in den Open Graph-Angaben. Da SEO-Plugins diese Angaben automatisch aus der für WordPress eingetragenen Domain generieren, muss per Hand die og:url im Meta-Tag mit http angegeben werden. Damit der Eintrag jeweils automatisch den Deep-Link berücksichtigt, muss das in der header.php von WordPress entsprechend angegeben werden.

Obacht: Mit the_permalink() kommt man hier nicht zum Ziel, denn damit würde die komplette neue URL, also die mit https ausgegeben. Der Server-Request dagegen fragt nur den Teil ab, der hinter dem Domainnamen steht.

<meta property="og:url" content="http://www.ihredomain.de<?php echo $_SERVER['REQUEST_URI']; ?>" />

Ein Blick in den Facebook-Debugger zeigte jetzt: Alles im grünen Bereich. Die übrigen Angaben für Open Graph müssen nun allerdings ebenfalls händisch gesetzt werden, denn die Nutzung eines SEO-Plugins für die Social Meta-Angaben ist ja nicht möglich.
Wichtig: Sollen die Einträge dynamisch sein, muss man sie mit den Mitteln von WordPress erstellen – was nicht gerade trivial ist, wenn man sich nicht mit Filtern und Hooks auskennt. Die Beschreibung der Vorgehensweise wäre dann schon wieder ein eigener Beitrag.

Puh, jetzt läuft erst mal alles. Aber vielleicht habt ihr Verbesserungsvorschläge oder weiterführende Hinweise? Dann freue ich mich auf einen Kommentar :-).

Bildquelle: Pixabay

7 Kommentare zu „Umzug auf HTTPS“

  1. Hallo Renate,

    ich hab zu meiner Frage Gestern noch eine Frage, die du nach der Umstellung ja sicher beantworten kannst:

    Werden nach der Umstellung auf SSL neue Facebook Shares zu den alten hinzugezählt?

    Also angenommen…
    meine http Seite hatte 10 Shares
    Und jetzt stelle ich auf https um und Facebook zählt dank der htaccess die Shares der http Seite weiter
    Wenn jetzt aber jemand auf der https Seite „shared“, werden dann 11 Shares gezählt?

    Nach meinem Verständnis sollte das ja nicht der Fall sein, da ja die https Seite „geshared“ wurde

    Freu mich auf eine Antwort von dir
    Jan

    1. Hallo Jan,

      nein, leider nicht. Das ist das Dilemma bei der von mir beschriebenen Vorgehensweise. Eine Lösung habe ich dafür bisher nicht.

      Wenn du nur wenige Shares für „http“ hast, würde ich den von mir beschriebenen Weg nicht gehen und dem Facebook-Bot lieber „https“ ausliefern. Dann brauchst auch die beschriebene Änderung in der .htaccess nicht. Die 11 Shares wären dann zwar verloren, aber die neuen zählen dann zukünftig über die neue URL.

      Im beschriebenen Fall gab es teilweise über 100 Shares. Da war die Entscheidung, diese erstmal zu übernehmen.

  2. Danke Renate für die schöne Erklärung.
    Ich will auch gerade auf SSL umstellen und frage mich was in der htaccess stehen muss:
    Hast du nur den oben angegebenen Quellcode in der htaccess stehen?
    Oder muss der von WP generierte Code erhalten bleiben?

    Jan

    Standard WP htaccess:
    # BEGIN WordPress

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

    # END WordPress

    1. Hallo Jan,

      ja, die WP-Angaben müssen unbedingt erhalten bleiben. Sie steuern ja das URL-Rewrite für die Permalinks. Alle eigenen Angaben schreibst drüber oder drunter.

    2. Kurze Ergänzung:
      Nach gut einem halben Jahr Erfahrung mit der beschriebenen Vorgehensweise, kann ich nur davon abraten, den Facebot umzuleiten. Es hilft nicht wirklich, die Shares zu erhalten. Zudem werden auch alle neuen Shares nicht unter „https“ erfasst. Und letztlich kommt hinzu, dass auch der Google-Bot die Umleitung des Facebots erfasst. Das ist dann überhaupt nicht mehr gut.

  3. Hallo Renate!
    Das ist ausführlich und die Sache mit den Facebook Likes hatte ich bislang in keinem Beitrag gesehen. OH – dass heißt, ich muss meine Facebook-afinen Kunden warnen und mir jetzt ansehen, wie man die Facebook-Likes in Drupal vor dem „S“-Tod bewahrt (auch mit Filtern und Hooks). Danke für die gründlichen Recherchen!
    Ulrike

    1. Danke Ulrike,
      schön wenn dir mein Beitrag helfen konnte. Dafür war er gedacht ;-).

      Die angegebenen Rewrite-Conditions müssten auch in Drupal funktionieren. Dort gibt es doch eine .htaccess.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht.

Scroll to Top