============ mod_rewrite-tut ===============

Was macht mod_rewrite?

mod_rewrite "überprüft" den Inhalt der Adressleiste Deines Browsers. Was dort eingegeben wurde, wird beim aktiven mod_rewrite intern umgesetzt, sowie es in den Regeln steht, doch dazu später.

Wozu ist mod_rewrite gut?

mod_rewrite ist dazu gut, um zb. aus einer Datei, die Variablen übergeben bekommt ( was nicht immer Suchmaschinen freundlich ist ) eine html datei zu machen.
Oder aus meinedomain.de/uwe
meinedomain/user.php?name=uwe

Für die Suchmaschinen ( und User ) sieht es nach einer Statischen Datei aus, es ist aber was ganz anderes.

So kann man z.B. ein Forum für die Suchmaschinen komplett nach "html" portieren .. und wer hätte nicht gerne 1000 Statische html dateien mit klasse Content in 10 php dateien untergebracht? *g*

was ist mod_rewrite genau?

mod_rewirte ist ein Modul, dass in allen neueren Versionen des apache webservers eingebunden sein sollte.

Läuft mod_rewrite bei mir?

Ob es auch auf dem eigenen Webspace installiert ist findet man am einfachsten mit einer info.php Datei heraus mit folgendem Inhalt:

PHP-Code:
<?php
   phpinfo
();
?>
dann einfach http://www.meinedomain.de/info.php aufrufen und nach "mod_rewrite" suchen.
Wenn es installiert ist, sollte man es auch finden

Wie benutze ich mod_rewrite?

Das Schema ist recht einfach:
mod_rewrite wird durch eine .htaccess Datei auf dem Webspace aktiviert.
Die braucht folgenden Inhalt:

Code :
1
2
3
4
5
6
7
8
9
1 RewriteEngine On
2 Options +FollowSymlinks
3 RewriteBase /
4
5 # Fuer die Kleinanzeigen
6 RewriteRule ^kurzerdateiname,(.*),(.*),(.*)(\.html?)$ umstaendlicher_datei_name_und_lang\.php?ka_id=$1&mail=$2&top=$3 [L]
7
8 # Rule Fuer die Module
9 RewriteRule ^(.*)(\.html?)$ modules.php?name=$1

das wars schon, jetzt die Erklärung:

in Zeile 1 wird das modul aktiviert damit es überhaupt ansprechbar ist
in Zeile 2 wird intern dem Apache gesagt, dass die Links explizit im Deinem Verzeichnis verfolgt werden sollen
in Zeile 3 gibst du das Verzeichnis an, welches auf mod_rewirte reagieren soll.
zum Testen sinnvoll ist evtl. ein neues Verzeichnis /test anzulegen, und auch das erst mal für Tests zu "mißbrauchen"
in Zeile 5 steht ein Kommentar "#" ist zum Auskommentieren
in Zeile 6 ist die erste Regel, jetzt wird es interessant:

RewriteRule = Regel
^ = Anfang der Regel bzw. Anfang von der Adresse, die in der Browser Adressleiste steht
kurzerdateiname,1,1,1.html eingegeben.
","sind einfach nur optische abtrennungen, wir hätten auch "_" oder sonst was benutzen können
(.*) steht für eine Variable, die per "get" übergeben wird.
(\.html?) steht für das ende, dass man eingibt, den "." muss man escapen.
$ = Ende der Regel bzw. Ende von der Adresse, die in der Broser Adressleiste steht.

und hinter diesem komplizierten code kommt die umsetzung auf das, was wirklich da ist auf dem Webspace:
kurzerdateiname wird zu umstaendlicher_datei_name_und_lang\.php
die (.*) werden von links nach rechts in gewohnter get funktion übergeben mit:
$1, $2, $3, .. $i
[L] steht für Last Rule .. also wenn die rule zutrifft, dann wird nicht auf weitere Regeln überprüft.

in Zeile 9 Wird die nächste Regel definiert, die nur greift, wenn die erste nicht gegriffen hat.
Hier wird jede "Variable.html" datei in den Aufruf: modules.php?name=Variable umgewandelt.

Natürlich gibt es noch viel mehr möglichkeiten, die mod_rewrite kann, doch das sind die wohl ( jedenfalls für mich ) am wichtigsten

Fragen usw. am besten per pn oder mail

cu - transmitter