Webseitenaufrufe verändern

Normalerweise wird eine Webseite beim Webserver angefragt und als Antwort der Seiteninhalt geliefert.

Häuftg wird diese Anfrage auf dem Webserver manipuliert, sodass z.B. ein Webauftritt mit vielen Seiten und Unterseiten nur eine kleine Programm-Datei aufruft, die die Anfrage auswertet und dann den jeweiligen angefragten Inhalt liefert.

Hier kommt .htaccess ins Spiel: In dieser Datei lassen sich Aufruf-Manipulationen sehr umfangreich durchführen. Häufige Anwendungen sind:

  • Umleitung einer Webseite/Domain auf eine andere Domain
  • Umleitung aller http-aufrufe zu https (erzwungene Verschlüsselung für eine Site)
  • Beim Relaunch, um passende Inhalte anzuzeigen, weil sich der Pfad geändert hat
  • Pfade anpassen z.B. bei Downloads
  • Hotlinks verhindern (Links von anderen Seiten direkt auf Inhalte oder Dateien)
  • Pfade oder Dateien vor Aufruf/Übertragung schützen
  • Passwortschutz für ganze Site oder Bereiche
  • und noch viele mehr. Es gibt sehr umfangreiche Möglichkeiten

Alle diese Manipulationen finden auf dem Webserver statt, bevor der eigentliche Inhalt vom Webserver aufbereitet und ausgeliefert wird. In .htaccess lassen sich auch Formeln und kleine Programmierungen hinterlegen, es stehen Variablen zur Verfügung.

Negativ-Beispiel

Die Website eines Kunden war gehackt und der Kunde mehrfach daraf hingewiesen worden, das auf seiner Seite auf komischen Inhalt zu sehen war bzw. weitergeleitet wurde.

Der Kunde hat dann jeweils seinen Browser geöffnet und seine eigene Webseite aufgerufen: Die Seite war normal sichtbar. Was war passiert?

Die .httaccess des Kunden wurde gehackt: Wurde die Seite direkt aufgerufen, also direkt im Browser www. und die Kundendomain eingegeben, dann wurde die Seite normal angezeigt. Diese Regelung erfolgte in der htaccess-Datei.

Wurde irgend-ein Referrer übergeben, die Webseite also durch klicken einer Verlinkung aufgerufen, wurde der böse Inhalt gezeigt. Über die Google-Suche wird dieser Referrer ebenfalls übergeben, und alle Besucher, die über die Google-Suche zum Kunden wollten, wurden "entführt".

Das alles war in der htaccess-Datei gespeichert. Denn selbst die erste Prüfung, ob die Seiteninhalte des Kunden manipuliert wurden, gaben kein Ergebnis: Es gab anscheinend keine Veränderung an der Seite und keine "Malware". Erst erweiterte Diagnose brachte die ursächliche Manipulation ans Licht.

Beispiele .htaccess

Die .htaccess ist eine Textdatei und es können mehrere Regeln kombiniert werden, auch komplex. Die Datei wird per FTP auf den Webserver übertragen. Der Server muss über das Modul mod_rewrite verfügen.

Hier ein paar Beispiele für wiederkehrende Anwendungszwecke.

  • #Für die Weiterleitung einer ganzen Domain (genauer: ALLES! wird umgeleitet):
    RewriteEngine On
     RewriteRule (.*) www.beispiel-zieldomain.de [R=301,L]
  • SSL/HTTPS erzwingen:
    ### ITSB: Alles Domains auf SSL/HTTPS umleiten
    # Passt immer: Bei mehreren Domains wird die ursprünglich angefragte Domain beibehalten
    # Die aufgerufene Unterseite wird als Ziel weitergegeben ($1)
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) %{HTTP_HOST}/$1 [R=301,L]
  • ### ITSB: Alles Domains auf SSL/HTTPS umleiten, eine feste Zieldomain
    # Kein SSL? Festes Ziel mit SSL! Mehrere Domains? Alle landen dann auf der selben Zieldomain
    # Die aufgerufene Unterseite wird als Ziel weitergegeben ($1)
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) www.eine-feste-zieldomain.de/$1 [R=301,L]
  • Weitere Beispiele folgen... z.B. Weiterleitung einer Unterseite auf eine neue Seite/Pfad

Keine Haftung, dies sind nur Beispiele und z.T. unvollständig. Bei unsachgemäßen Einträgen ist eine Webseite leicht gar-nicht mehr erreichbar.

Ein Beispiel mit Erläuterung

RewriteEngine On
#Einmalig oben in der .htaccess Datei, dadurch wird das rewrite-Modul des Webservers aktiviert

RewriteCond %{HTTPS} off
#Wenn beim Aufruf durch den Browser das Merkmal zutrifft, dass {HTTPS} off ist...

RewriteRule (.*) %{HTTP_HOST}/$1 [R=301,L]
#... dann soll folgendes geändert werden:
#  (.*) Alles
#    (.*) ist eine RegEx die für "alles" steht: Es wird also der gesamte Aufrufstring ersetzt.
#  ...ersetzt durch %{HTTP_HOST}/$1
#    $1 beinhaltet den Namen/Pfad, der aufgerufen wurde. Er wird also wieder 'rangehängt.
#    R=301 führt Redirect aus als 301-Statuscode an den Browser, L=Last "Fertig!", letzte Regel, keine weiteren Regeln in der htaccess anwenden/prüfen.

Referenzen / Links

Im Internet gibt es viele weitere Quellen zu .htaccess. Die Anwendungsfälle sind, wiegesagt, beinahe unbegrenzt.

Nachfolgend Links und Lesezeichen zu diesem Thema: