Hauptmenü

Untermenü

.htaccess - mod_rewrite Teil 2

1. Die Abschnitte

2. Das Prinzip

Um denn nun URLs umzuwandeln, benötigt man dafür eine Regel. Und die basiert (leider) auf regulären Ausdrücken. Wer davon also null Ahnung hat, sollte sich zuerst mal dieses Tutorial einverleiben. Also zuerst definiert man die Regel mittels RewriteRule. Dann kommt die Ausgabe/Umwandlung und zu guter Letzt der Original-Link.


RewriteRule [Ausgabe] [Original]

3. Ein ganz einfaches Beispiel

Wenn man PHP-Dateien als "HTML" ausgeben möchte, so nimmt man die folgende Anweisung.


RewriteEngine on RewriteRule ^(.*)\.htm$ $1.php

Erläuterung

Konzentrieren wir uns zuerst mal auf die Ausgabe ^(.*)\.htm$. Das ^ steht für den Anfang einer Zeichenkette und das $ für das Ende. Der Punkt vor dem htm wird "escaped". Also nichts Wildes. Interessant dagegen ist das (.*). Denn dabei handelt es sich um eine Referenz, die übergeben wird. Aber wo kommt die her? Nun, aus der Angabe des "Originals", also $1.php. Und in der "Variable" $1 befindet sich der komplette Pfad ausgehend vom Wurzelverzeichnis.

4. Die Wirkungsweise

Dazu greifen wir auf das Beispiel im Ordner mod_rewrite_2 zurück. Tragt zuerst obige Anweisung in die .htacccess ein. Und dann schaut euch mal die beiden PHP-Dateien in den jeweiligen Unterordnern an. Dort haben wir bei den Links einfach aus der eigentlichen Dateiendung .php ein .htm gemacht.

Und für die "Umwandlung" sorgt die oben beschriebene Regel. Aber was ist, wenn man zum Beispiel GET-Parameter durchschleifen muss? Gehen die dann nicht hopps? Nö, denn der aufgerufene Link wird vom Apache intern umgeschrieben. Und das hat keine Auswirkung auf die. Man muss sich das ungefähr so vorstellen.

mod_rewrite

Ganz wichtig!

Damit das funktioniert, muss im erzeugten Quelltext immer der "Ausgabe"-Link stehen. Bei statischen Seiten hackt man den per Hand, bei dynamischen muss man ihn per PHP umwandeln. Ansonsten wird unter Umständen die "echte" URL aufgerufen. Oder auch nicht, das hängt von der .htaccess ab. Das gilt übrigens für alle folgenden Beispiele zu diesem Thema.

5. Eine erste Zusammenfassung

Die Regel RewriteRule [Ausgabe] [Original] bedeutet, dass jeder, der auf die Seiten zugreift, immer die [Ausgabe] zu Gesicht bekommt. Dabei ist es lattens, ob das von einem User über den Browser geschieht, von einem Suchmaschinen-Spider oder von irgendeiner anderen Anfrage. Intern wird nach wie vor das [Original] verwendet.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt