Die Rewrite-Rules der .htaccess sind ein mächtiges Mittel, um auf einem Webserver Dateien umzuleiten oder durch ein Skript bearbeiten zu lassen: So kann man zum Beispiel alle Eingaben nach dem Domain-Namen automatisch an ein Skript weiterleiten lassen, um schönere URLs zu bekommen:
Aus der etwas unschönen Webadresse:
www.seite.de/index.php?stadt=hamburg
…könnte dann diese URL werden:
www.seite.de/hamburg.html
Schöne URLs mit dem .htaccess Rewrite
Damit das funktioniert, muss man dem Server die Umleitung (“Rewrite”) vorher mitteilen. Dazu legt man in dem Hauptordner (in unserem Beispiel direkt unter www.seite.de) eine Datei namens “.htaccess” an. Wenn diese schon exisziert, kann man sie einfach bearbeiten. Dateien mit einem Punkt gelten auf UNIX-ähnlichen Systemen allerdings als versteckte Dateien, deshalb muss man eventuell die Einstellungen des FTP-Programms ändern, um sie zu sehen!
Mit diesem Code würde das Beispiel oben schon funktionieren und aus “hamburg.html” würde intern “index.php?stadt=hamburg” werden – allerdings funktioniert dies auch für alle anderen Eingaben, die vor dem “.html” angegeben werden:
RewriteEngine On
RewriteRule ^(.*).html$ /index.php?stadt=$1
Trotz Rewrite: Verzeichnis ausschließen und normal behandeln
Möchte man jetzt ein bestimmtes Verzeichnis aber von dieser Rewrite-Regel ausnehmen, dass trotz sämtlich anderen Angaben in der .htaccess Datei ganz normal behandelt werden soll, muss man dies vor allen anderen Rewrite-Befehlen (aber nach “RewriteEngine On”!) angeben:
RewriteRule ^(ordner1|ordner2)($|/) - [L]
Dieser Befehl schließt die beiden Verzeichnisse “ordner1” und “ordner2” von der Bearbeitung durch die Rewrite-Rules aus – die beiden Verzeichnisse werden also ganz normal angezeigt.