Apache Webserver HTTP zu HTTPS umleiten

Steigst du gerne von von HTTP auf HTTPS um, hast du deine Website auf dem eigenen Server mit apache2 als Webserver laufen und hast dir ein SSL Zertifikat gekauft oder kostenlos bei letsencrypt erstellt, dann möchtest du auch, dass alle Anfragen auf HTTPS umgeleitet werden.

Apache Umleitung

Padlock safetyWenn du dir die apache 2 Dokumentation zum Thema Weiter-/ Umleitung anschaust, stellst du schnell fest, dass es recht viele verschiedene Möglichkeiten gibt, um das zu bewerkstelligen. Eine Methode ist allerding kurz, einfach und verständlich und zwar die „Redirect“ Methode.

Umleitungsarten

Der Redirect-Befehl nimmt einen Status-Parameter entgegen, die die Art der Umleitung bestimmen.
Redirect [status] [URL-path] URL 

  • permanent – HTTP code 301 – Die angeforderte Ressource steht ab sofort unter der angegebenen Umleitungsadresse bereit. Die alte Adresse ist nicht länger gültig.
  • temp – HTTP code 302 – Die angeforderte Ressource steht vorübergehend unter der angegebenen Umleitungsadresse bereit. Die alte Adresse bleibt gültig.
  • seeother – HTTP code 303 – Die Antwort auf die durchgeführte Anfrage lässt sich unter der angegebenen Umleitungsadresse beziehen. Der Browser soll mit einem GET folgen, auch wenn der ursprüngliche Request ein POST war.
  • gone – HTTP code 410 – Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.

Welchen Status du brauchst, um dauerhaft umzuleiten, denn du willst ja für die Zukunft alle Anfragen auf HTTPS umleiten, ist denke ich klar. Der „permanent“ Status ist der Richtige.

Umleitung festlegen

Unter linux befinden sich im „sites-enabled“ Ordner von apache2 alle VirtualHosts, die aktiviert sind. Hier befindet sich dann auch die Einstellung zu deiner Webseite. Alles weiterführende mache ich jetzt am Beispiel von techblog.leuma.de.

Bei mir sind HTTP und HTTPS in unterschiedliche Dateien aufgeteilt:

  • techblog.leuma.de_http
  • techblog.leuma.de_https

Die „techblog.leuma.de_http“ musst du jetzt bearbeiten und folgendes dort eintragen:

Hier bitte auf garkeinen Fall den „/“ hinter der Adresse vergessen. Hatte ich selbst gemacht und es ist unpraktisch. Viele Browser senden zuerst eine HTTP Anfrage, die wird durch diesen VirtualHost umgeleitet. War die Anfrage jetzt z.B. „techblog.leuma.de/test.php“ (was erstmal als HTTP angefragt wird) wird diese ohne „/“ auf „https://techblog.leuma.detest.php“ geleitet und der Browser beschwert sich, da er die Webseite nicht findet. Verständlich…

Error without slash

Konfiguration neu laden

Unter linux musst du dazu ledigliche apache2 sagen, dass er seine Daten einmal neu läd:
sudo service apache2 reload 

Testen

Um die Umleitung zu testen, gib einmal deine URL mit http davor in die Adresszeile deines Browser ein. Also beispielweise „http://techblog.leuma.de“ für den techblog. Die Umleitung funktioniert jetzt und die Webseite ist für keinen mehr unter HTTP erreichbar.

Achtung vor dem Browsercache. Falls die Umleitung nicht sofort funktioniert, versuche mal den privaten Modus, sodass der alte Cache außen vor ist.

 

Kommentar hinterlassen

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