Da Google es schon länger fordert, sollte man seine Webprojekte möglichst auf SSL umstellen um im Vergleich mit anderen Seiten nicht zu verlieren.
Wie man z. B. bei All-Inkl das kostenfreie Let’s Encrypt einbindet findet man hier. Neben der Möglichkeit überhaupt SSL-Zertifikate verwenden zu können sind je nach Webseite einige Anpassungen an der Webseite selber notwendig.
Bei einem WordPress-Blog müssen so beispielsweise mit folgenden SQL-Befehlen alle „hartcodierten“ Links in bereits veröffentlichten Artikeln, so wie auch in der WordPress-Konfiguration, umgeschrieben werden:
1 2 3 4 |
UPDATE wp_options SET option_value = replace(option_value, 'https://blog.devilatwork.de', 'https://blog.devilatwork.de') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'https://blog.devilatwork.de','https://blog.devilatwork.de'); UPDATE wp_posts SET post_content = replace(post_content, 'https://blog.devilatwork.de', 'https://blog.devilatwork.de'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://blog.devilatwork.de','https://blog.devilatwork.de'); |
In schlampig programmierten Themes oder Plugins müssen eventuell auch noch Verlinkungen geändert werden, so musste ich z. B. die Grafiken in einem Slider alle neu zu ordnen.
Bei selbst gebauten Webseiten müssen entsprechende Link-Variablen oder Links natürlich auch angepasst werden. Bei relativen Links hat man kein Problem, allerdings sind diese aus SEO-Gründen nicht mehr empfehlenswert und sollten durch absolute Links ersetzt werden.
Außerdem müssen extern geladene Dateien wie z .B. CSS-Dateien oder Javascript-Dateien von CDNs auch über https abgerufen werden.
Danach folgt die serverseitige Konfiguration mithilfe von Rewrite Rules. Dadurch soll jede Anfrage an den Webserver an die SSL-Version der Webseite umgeleitet werden.
Hierzu hatte ich zwei Regeln in der .htaccess eingerichtet um Nicht-SSL-Anfragen und Anfragen, die nicht an die www-Subdomain gerichtet waren, an die SSL-Version umzuleiten:
1 2 3 4 5 6 |
# rewrite the url always to the wwww-subdomain and force ssl RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # folgende Regel wird wegen der All-Inkl-Einstellung vermutlich gar nicht ausgeführt RewriteCond %{HTTPS} off RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
Bei solchen Regeln muss unbedingt ein 301-Redirect gesetzt werden, damit die Suchmaschinen die alten Links dauerhaft in die neuen umändern und die alten Seiten nicht ihr Ranking im Google-Index verlieren! Denn dort müssen diese verschwinden, dabei würden die mühsam gesammelten Rankings verloren gehen und man würde wieder bei Null anfangen!
Im All-Inkl-Backend hatte ich folgende Optionen bzgl. SSL aktiviert, was vermutlich doppelt gemoppelt gewesen ist:
Das Ergebnis war allerdings noch nicht befriedigend. Zwar funktionierte die Umleitung auf SSL ohne Probleme, aber bei Google PageSpeed Insights beim Test aller URL-Varianten (mit oder ohne www und mit oder ohne https) zeigte sich ein Weiterleitungsproblem:
Problematisch, da eine „doppelte“ Weiterleitung stattfindet.
Deshalb habe ich die beiden Rewrite Rules mithilfe eines [OR] zusammengefasst. Leider lässt sich die %{HTTP_HOST}-Variable bei dieser Zusammenfassung der Regeln für die Ziel-URL nicht mehr verwenden, sodass man die URL vor der %{REQUEST_URI}-Variable ausschreiben muss, ansonsten würde beim Aufruf der www-Subdomain das „www.“ leider doppelt vorangestellt werden:
1 2 3 4 5 6 |
<IfDefine !DEV_ENV> # rewrite the url always to the www-subdomain and force ssl RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.domain.de%{REQUEST_URI} [R=301,L] </IfDefine> |
Bei dieser RewriteRule auf jeden Fall den SSL-Force im All-Inkl-Backend deaktivieren, um die doppelte Weiterleitung zu verhindern:
Das Ergebnis bei Google PageSpeed Insights beim Test aller URL-Varianten mit oder ohne www und mit oder ohne https sah nun besser aus:
Für alle URL-Variationen des Domainnamens kann man nun beispielsweise auf https://www.redirect-checker.org schauen ob die Weiterleitung korrekt arbeitet. Es sollte ungefähr so aussehen:
https://www.domain.de
>>> https://www.domain.de
> ——————————————–
> 301 Moved Permanently
> ——————————————–
Status: 301 Moved Permanently
Code: 301
Date: Wed, 27 Sep 2017 17:49:25 GMT
Server: Apache
Location: https://www.domain.de/
Content-Length: 236
Connection: close
Content-Type: text/html; charset=iso-8859-1>>> https://www.domain.de/
> ——————————————–
> 200 OK
> ——————————————–
Status: 200 OK
Code: 200Date: Wed, 27 Sep 2017 17:49:25 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: Accept-Encoding
Content-Type: text/html
https://domain.de
>>> https://domain.de
> ——————————————–
> 301 Moved Permanently
> ——————————————–
Status: 301 Moved Permanently
Code: 301
Date: Wed, 27 Sep 2017 17:53:02 GMT
Server: Apache
Location: https://www.domain.de/
Content-Length: 236
Connection: close
Content-Type: text/html; charset=iso-8859-1>>> https://www.domain.de/
> ——————————————–
> 200 OK
> ——————————————–
Status: 200 OK
Code: 200
Date: Wed, 27 Sep 2017 17:53:02 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: Accept-Encoding
Content-Type: text/html
https://domain.de
>>> https://domain.de
> ——————————————–
> 301 Moved Permanently
> ——————————————–
Status: 301 Moved Permanently
Code: 301
Date: Wed, 27 Sep 2017 17:54:17 GMT
Server: Apache
Location: https://www.domain.de/
Content-Length: 236
Connection: close
Content-Type: text/html; charset=iso-8859-1>>> https://www.domain.de/
> ——————————————–
> 200 OK
> ——————————————–
Status: 200 OK
Code: 200
Date: Wed, 27 Sep 2017 17:54:17 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: Accept-Encoding
Content-Type: text/html
https://www.domain.de
>>> https://www.domain.de
> ——————————————–
> 200 OK
> ——————————————–
Status: 200 OK
Code: 200
Date: Wed, 27 Sep 2017 17:54:53 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: Accept-Encoding
Content-Type: text/html
Edit: Mir wurde gemailt, dass die Seite ab und an nicht richtig bzw. nur sehr langsam funktionieren soll oder Werbung anzeigt. Als Alternative wurde mir noch folgender Dienst empfohlen: https://www.websiteplanet.com/de/webtools/redirected/
Einige weitere Schritte sind noch zu erledigen, wie z. B. das Neuanlegen der Sitemap mit https- statt http-Links, das Hinzufügen der https-Variante der Seite in den Google Webmaster Tools / der Google Search Console und bei Nutzung von Analytics das Verknüpfen mit dem neuen Web Property aus den Webmaster Tools. Hier gibt es auch eine ganz gute Übersicht der einzelnen Schritte.