Mod_Rewrite Tutorial (Mod_Rewrite aktivieren und einsetzen)
Mod_Rewrite ist ein Apache-Modul, welches das Umschreiben von Adressen und Urls mittels einfacher Regeln ermöglicht.
Die Regeln, auf die ich später noch genauer eingehen werde, werden in der .htaccess- Datei auf Ihrem Webspace eingetragen. Mittels dieser Regeln werden die vom Benutzer in die Adresszeile des Browsers eingegebenen Urls intern in die eigentlichen Urls umgewandelt und verarbeitet.
Aussehen könnte das Ganze dann im Einsatz wie im Folgenden beschrieben.
Die intern verarbeitet Adresse lautet in der Originalversion so:
http://www.domain.de/index.php?content=Produkte&page=231&order=1
Sie wollen daraus eine normale *.html- Datei machen und das Ergebnis mittels mod_rewrite könnte zum Beispiel folgendermaßen aussehen:
http://www.domain.de/Produkte-231-1.html
Das sieht freundlicher und übersichtlicher aus und dynamische Seiten, welche mittels einer Skriptsprache wie PHP erzeugt werden, können unmittelbar als echte HTML-Seiten in den Suchmaschinenindex.
2. Mod_Rewrite überprüfen und ggf. installieren / aktivieren
Um zu überprüfen, ob mod_rewrite auf Ihrem Apache-Server installiert ist führen Sie einfach das folgende PHP- Skript auf Ihrem Server aus:
<?php
phpinfo();
?>
phpinfo();
?>
Ist Mod_Rewrite als Modul vorhanden, wird es mittels einer .htaccess-Datei aktiviert. Die Datei sollte mit folgendem Inhalt ausgestattet sein:
RewriteEngine On
RewriteBase /
Wie man sich wahrscheinlich denken kann wird das Modul als solches in der ersten Zeile aktiviert: RewriteEngine OnRewriteBase /
In der zweiten Zeile folgt der Befehl RewriteBase gefolgt von einem Verzeichnis (in diesem Beispiel das selbe Verzeichnis in dem auch die .htaccess-Datei liegt).
RewriteBase gibt einfach nur an, in welchem Verzeichnis Mod_Rewrite aktiv werden soll.
Kommen wir nun zu dem spannenden Teil des Tutorials, den Regeln.
3. Die Mod_Rewrite Regeln
Mod_Rewrite stellt eine Reihe von Regeln zur Verfügung, nach denen die Skripte ausgeführt werden.
Die Mod_Rewrite Regel für das obenstehende Beispiel lautet also:
RewriteRule ^([-a-zA-Z0-9]+)-([0-9]+)-([0-9])\.html$ /index.php?content=$1&page=$2&order=$3 [L]
Eingeleitet wird eine neue Mod_Rewrite-Regel mit dem Schlüsselwort RewriteRule. Die Erklärung:
Mit ^ wird der Anfang einer Adresse, welche im Browser eingegeben wird gekennzeichnet.
Die runden Klammern bezeichnen in dem Adressausdruck eine Variable mit einer Menge an Zeichen und Ziffern, welche an dieser Stelle in dem Ausdruck zulässig sind.
([-a-zA-Z0-9]+) bedeutet also alle Groß- und Kleinbuchstaben, sowie alle Ziffern dürfen in dem Ausdruck vorhanden sein.
Die Mengenoptionen werden in eckigen Klammern angegeben.
Wenn Sie alle Zeichen und Ziffern zulassen möchten können Sie alternativ auch (.*) als Muster nehmen, wobei keine eckigen Klammern zum Einsatz kommen.
Darauffolgend muss laut unserer Regel ein Minus folgen (-).
Nach dem Minus müssen wieder Ziffern folgen ([0-9]+), darauf folgt eine einzelne Zahl zwischen 0 und 9 ([0-9]) und die Datei muss mit .html enden damit diese Regel zutrifft.
Wird also in die Adresszeile des Browsers: http://www.domain.de/produkte-321-1.html eingegeben trifft die Regel zu und das Script http://www.domain.de/index.php?content=Produkte&page=321&order=1 wird aufgerufen.
$1 und $2 bilden die GET- Variablen, welche auf die Ausdrücke in den runden Klammern zutreffen.
Das [L]- Flag bedeutet soviel wie letzte Regel, dass heisst wenn diese Regel auf den angegebenen Ausdruck zutrifft wird keine weitere Regel mehr gesucht und das Script ausgef�hrt.