Webseite auf SSL-Verschlüsselung umstellen

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:

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 htpps 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 2 Regeln in der .htaccess eingerichtet um Nicht-SSL-Anfragen und Anfragen die nicht an die www-Subdomain gerichtet waren an die SSL-Version umzuleiten:

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 irgendwann aus dem Google-Index verschwinden!

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:

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 http://www.redirect-checker.org schauen ob die Weiterleitung korrekt arbeitet. Es sollte ungefähr so aussehen:

http://www.domain.de

>>> http://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: 200

Date: Wed, 27 Sep 2017 17:49:25 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: Accept-Encoding
Content-Type: text/html

http://domain.de

>>> http://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

 

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 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.

Tobias Langner

Ich arbeite seit mehreren Jahren als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-„Pausierer“ an der FernUni Hagen

Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Schreibe einen Kommentar