.htaccess - mod_rewrite Teil 2
1. Die Abschnitte
- Einführung
- mod_rewrite Teil 1
- mod_rewrite Teil 2
- mod_rewrite Teil 3
- mod_rewrite Teil 4
- Weiterleitungen
- Aussperren Teil 1
- Aussperren Teil 2
- Zugriffsschutz Teil 1
- Zugriffsschutz Teil 2
- PHP-Einstellungen Teil 1
- PHP-Einstellungen Teil 2
- Fazit
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.
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