HTTPS für alle! Redirect aller Requests auf SSL ohne Veränderung.

Hier mal wieder ein Codeschnipsel, den wir immer wieder brauchen und fast genauso oft „ergooglen“ müssen. Ich verewige das daher mal in unserem Blog 😉

Bequemes Herstellen der Vertraulichkeit

Artikelbild_httpsGefragt ist hier die Weiterleitungen aller Requests an einen Apache-Webserver über http an ihre Pendants über https.
Im Zeitalter des globalen Abhörens von allem durch wohl so ziemlich alle Geheimdienste dieser Welt ist dies ein von unseren Kunden immer öfter gewünschtes Feature.
Die Benutzer einer Webseite sind sich oft nicht bewußt, dass Ihr Besuch auch über eine verschlüsselte Verbindung stattfinden könnte. Man kann sie mit dieser Lösung sanft zu ihrem Glück zwingen.

Die Lösung für mod_rewrite: redirect auf https

Vorraussetzung ist ein installiertes mod_rewrite, die Zeilen können in

  • der allgemeinen httpd.conf (nicht so sinnvoll),
  • im Virtualhost oder
  • in der Datei .htaccess im Document Root

des Auftritts untergebracht werden.

Hier die beiden Zeilen – die erste erübrigt sich, wenn man ohnehin schon Regeln zum Einsatz bringt.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Dabei wird eine URL einfach nur auf https umgeschrieben, aus einem http://www.weblizards.de/blog würde also ein https://www.weblizards.de/blog.
Die Condition der zweiten Zeile verhindert übrigens, dass diese Regel für eine Anfrage per https greift – es würde sonst eine Schleife entstehen.

Diese Regel funktioniert übrigens, wenn auf Port 443, also dem Port für https-Verbindungen, kein Apache lauscht, also z.B. ein eine Tomcat, Glassfish, Jira oder ähnliches)

8 Gedanken zu „HTTPS für alle! Redirect aller Requests auf SSL ohne Veränderung.

  1. Wie sieht es mit Auswirkungen auf SEO aus, eine komplette 301 Weiterleitung von allen Elementen einer Website wird von Google ja nicht so gerne gesehen?

  2. Hallo,

    ich finde es etwas aufwändig, dafür das rewrite Modul einzusetzen. Die Anweisung „RedirectPermanent“ in der Apache Konfiguration finde ich besser. Außerdem muß es am Beginn des letzten Absatzes anstatt „Diese Regel funktioniert übrigens“ doch bestimmt „Diese Regel funktioniert übrigens NICHT“ heißen, oder?

    Gruß
    Uwe

    • Hallo Uwe, danke für das Feedback.

      mod_alias lässt sich halt nicht so leicht nur über die .htaccess nur auf Port 80 beschränken – da lasse ich mich aber gerne korrigieren.

      Der letzte Satz ist schon so gewollt. Ob an den weitergeleiteten Port nun ein Apache, TomCat oder auch gar nichts lauscht ist ja für die Weiterleitung von Port 80 aus erstmal unerheblich 😉

      • Hallo Thomas,
        Dann schreib: „übrigens auch“.
        Ich war bei dieser Aussage auch etwas irritiert da sie klingt als würde die Regel den Apache ausschließen. 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*