QuickTipp: Weiterleitung (redirect) von HTTP auf HTTPS via Apache oder Htaccess

apache logo

Sensible Webseiten-Daten sollten grundsätzlich immer via SSL Verschlüsseltung ausgeliefert werden (HTTPS statt HTTP). Ich zeige in diesem QuickTipp wie die Weiterleitung von HTTP auf HTTPS eingerichtet wird sodass auch Parameter erhalten bleiben.

Eine SSL Verschlüsselung ist grundsätzlich einge gute Idee sensible Daten gegen Dritte zu schützen. Aber was bringt es wenn das SSL Zertifikat am Root Server / managed Server installiert und die Verschlüsselung aktiviert ist, aber die Webseite trotzdem noch per HTTP erreichbar ist? HTTP muss daher auf HTTPS weitergeleitet werden. Je nachdem welche Bereiche man schützen will kann man die Konfiguration erweitern,  sodass sie nur für gewisse Verzeichnisse oder Anfragen greift.

Voraussetzung: Apache rewrite Modul aktiviert und Webserver bereits via HTTP und HTTPS erreichbar.

HTTP auf HTTPS weiterleiten via htaccess

Die .htaccess Datei sollte direkt im Root Verzeichnis der Webseite liegen. In meinem Beispiel werden sämtliche Webseiten Aufrufe, welche per HTTP auf den Server kommen, auf HTTPS umgeschrieben. Für den User bleibt dieser Vorgang eigentlich völlig unbemerkt, da der Prozess im Hintergrund statt findet.


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

Zeile 1: überprüft ob das Modul mod_rewrite aktiviert ist
Zeile 2: aktiviert die Rewrite Engine
Zeile 3: überprüft ob HTTPS eingeschaltet ist, wenn nicht führt er den Inhalt von Zeile 4 aus
Zeile 4: leitet sämtliche Anfragen via Statuscode 301 (permanent redirect) auf HTTPS um

Warum Status Code 301 und nicht 302?

Standardmäßig wird in der RewriteRule mit R (Redirect) die Weiterleitung definiert. Diese liefert den HTML Statuscode 302 (found), also eine Temporäre Weiterleitung zurück. Wir definieren aber explizit den Status Code 301 (permanent redirect) für eine Permanente Weiterleitung.

Das ist gerade für SEOs in der Suchmaschinenoptimierung sehr wichtig, wenn bereits Backlinks auf die Webseite mit HTTP existieren. Die Linkkraft wird mit einem 301 Redirect direkt und ohne Verlust auf die HTTPS Seite übertragen, ohne dabei an Ranking zu verlieren.

Matt Cutts über 301 Weiterleitungen

Weiterleitung von HTTP auf HTTPS über die Apache Konfiguration

Die Rewrite Regeln müssen nicht unbedingt in einer htacccess Datei stehen, sondern können direkt in der Apache Konfiguration eingetragen werden. zb:. wie folgt in der vHost Konfiguration:


ServerName vhost.domain.com
DocumentRoot /var/www/website1
    
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

Sämtliche Aufrufe auf die Website http://vhost.domain.com werden auf https://vhost.domain.com umgeleitet. Voraussetzung ist natürlich dass die Webseite auch für SSL konfiguriert wurde.

Weitere Informationen zu Apache Rewrite gibts in der offiziellen Dokumentation

QuickTipp: Weiterleitung (redirect) von HTTP auf HTTPS via Apache oder Htaccess, 4.3 out of 5 based on 30 ratings
GD Star Rating
loading...
Patrick Schoyswohl

Patrick Schoyswohl

Systemadministrator
Hallo, mein Name ist Patrick Schoyswohl und ich bin Systemadministrator in einer Agentur für neue Medien und seit 2009 Betreiber und leidenschaftlicher Blogger von SysADMINsLife.com. Meine Leidenschaft gehört den Webservern und der Serverüberwachung auf Open-Source Basis. Falls du gefallen an meinen Artikel hast, kannst du mir gerne auf Google+, Facebook oder Twitter folgen.
Patrick Schoyswohl
Making Sites Uber Fast! Yeah @filiwiese #seokomm https://t.co/avT4fU6pZw - 5 Monaten ago
Patrick Schoyswohl

Tags: , , , , , , , , , , , , ,

Montag, 25. Februar 2013 Apache, Linux, WebServer Author: Patrick Schoyswohl

12 Comments zum Thema QuickTipp: Weiterleitung (redirect) von HTTP auf HTTPS via Apache oder Htaccess

  • Pascal sagt:

    danköööö

  • Alex sagt:

    Danke für die Anleitung, auch wenn ich sie leider nicht brauche, da ich keine sensible Webseite habe! 🙂

  • Thorsten sagt:

    Danke 🙂

  • Florian sagt:

    Vielen Dank für die Anleitung! Eine Frage hierzu: Wenn ich eine bestimmte Subdomain z.B. sub.domain.de von der Weiterleitung ausschließen möchte, wie muss dann die Zeile 4 in der htaccess heißen? Danke im Voraus!

  • Bogdan sagt:

    Danke! Genau das, was ich gesucht habe.

  • Martin sagt:

    Hallo,

    komme echt nicht weiter, erst too many connections und dann internal server error 500. in meiner htaccess datei steht:

    Options FollowSymLinks
    RewriteEngine On

    RewriteRule ^admin$ admin/index.php [L]
    RewriteRule ^admin/$ admin/index.php [L]

    RewriteCond %{HTTP_HOST} ^DOMAINNAME\.de [NC]
    RewriteRule ^(.*)/$ $1 [R=301,L]

    RewriteRule ^css/([^_]+)$ css/$1 [L]
    RewriteRule ^fancybox/([^_]+)$ fancybox/$1 [L]
    RewriteRule ^grafika/([^_]+)$ grafik/$1 [L]
    RewriteRule ^js/([^_]+)$ js/$1 [L]
    RewriteRule ^smarty/([^_]+)$ smarty/$1 [L]
    RewriteRule ^templates/([^_]+)$ templates/$1 [L]
    RewriteRule ^templates_c/([^_]+)$ templates_c/$1 [L]

    RewriteRule ^anmelden-registrieren$ index.php?mod=loging [L]
    RewriteRule ^warenkorb$ index.php?mod=konto&p=warenkorb[L]

    in der index.php steht folgendes:

  • Manfred sagt:

    Habe die HTTP auf HTTPS Umleitung gemäss diesem Artikel implenentiert. Funktioniert prima, danke!

  • Gerald sagt:

    Dankeschön für den guten Tipp und die ausführliche Anleitung!

    Hinweis – kleiner Schreibfehler im Text ganz oben oben:
    falsch: HTTP muss daher auf HTTP weitergeleitet werden.
    richtig: HTTP muss daher auf HTTPS weitergeleitet werden.

  • Lutz sagt:

    Vielen dank! Es funktioniert einwandfrei.

  • Flo sagt:

    Tolle Anleitung, vielen Dank. Ich musste allerdings die erste Zeile anpassen, damit es funktioniert:

    Vorher:
    ifmodule mod_rewrite.c=““

    Nachher:
    ifmodule mod_rewrite.c

    Was bewirkt =““ eigentlich?

    Viele Grüße

    Flo

  • Leave a Reply

    Werbung schalten

    *=Affiliatelink

    Blogverzeichnis - Blog Verzeichnis bloggerei.de