Apache mod_rewrite

mod_rewrite ist ein mächtiges Werkzeug welches mit Hilfe von regulären Ausdrücken, eine Menge an Möglichkeiten bietet. Aber auch sehr schnell unüberschaubar wird und gefährlich werden kann.
Es kann die Sicherheit eines Servers steigern aber auch neue Türen öffnen.

1. Verstecken von Dateien mit RewriteRule's

Das folgende minimalistische Beispiel zeigt, wie man mit Hilfe von RewriteRule's Dateien und Verzeichnisse verstecken kann, und an den Client-Browser eine "404 Seite nicht gefunden" Meldung sendet.


# Datei oder Verzeichniss mit dem Namen "intern" verstecken kann, und 404 Meldung ausliefern

RewriteRule ^intern$ - [R=404,L]        # Versteckt Datei oder Verzeichnis intern
RewriteRule ^intern.*$ - [R=404,L]      # Versteckt alles was mit intern beginnt
RewriteRule ^intern\.html$ - [R=404,L]  # Versteckt nur die Seite intern.html
			

Diese mod_rewrite Anweisung, können entweder in der .htaccess Datei definiert sein, oder direkt in der Apache Konfiguration (z.B. im Directory Bereich).

2. Umleiten von Dateien mit Endung .htm/.html auf Skripte

Manchmal möchte man vor dem User verstecken, mit welcher Sprache man seine Seite geschrieben hat. Hier ein kleines Beispiel, wie man sowas mit Hilfe von mod_rewrite bewerkstelligen kann.


# Leitet bei Anfrage von index.html die Anfrage auf index.php um
RewriteRule ^index\.html$ index.php [L]   

# Leitet jede .html Anfrage auf .jsp um
RewriteRule ^(.*)\.html$ $1.jsp [L]       

# Leitet jede Anfrage die nur mit Buchstaben beginnt
# und mit .html endet auf eine .asp Seite um
RewriteRule ^([A-Za-z]*)\.html $1.asp [L] 
			

3. Alle Anfragen umleiten

Möchte man alle Anfragen umleiten, z.B. weil man gerade an der Seite arbeitet, so ist dies auch mit mod_rewrite möglich.


RewriteRule ^.*$ seite_offline.html [L]    # Leitet alle Anfragen auf die Datei seite_offline.html um