Regular Expressions für mod_rewrite
Hier eine Auflistung der wichtigsten Steuerzeichen bei der Verwendung von Regular Expression für das mod_rewrite:
. |
Ein beliebiges Zeichen. |
\. |
Ein Punkt. |
.+ |
Ein oder mehrere beliebige Zeichen. |
\.\+ |
Ein Punkt und ein Pluszeichen. |
.* |
Kein oder mehr beliebige Zeichen. |
.? |
Kein oder ein beliebiges Zeichen. |
^a |
"a" am Anfang einer URL oder eines Dateinamens. |
a$ |
"a" am Ende einer URL oder eines Dateinamens. |
a |
b |
(.*) |
(Gruppe) die in ".*" gefundene Zeichenkette wird in der Variable "$1" gespeichert wenn es sich um eine RewriteRule handelt. Wenn es sich um eine RewriteCond handelt wird die Zeichenkette in "%1" gespeichert. Es dürfen mehrere Gruppen in einem Ausdruck verwendet werden. Dementsprechend werden die Inhalte in "$2", "$3", .... "$99" abgelegt. |
(a |
b) |
[-0-9a-z]* |
Beliebig viele Bindestriche, Zahlen oder Kleinbuchstaben. |
[^/]* |
Beliebig viele Zeichen, jedoch kein Slash. |
!regexp |
=true wenn der Ausdruck nicht gefunden wird. |
<2000 |
Vergleichsausdruck ist kleiner als 2000. |
>1000 |
Vergleichsausdruck ist grösser als 1000. |
="" |
Vergleichsausdruck ist ein leerer String. |
-d |
Vergleichsausdruck zeigt auf ein Verzeichniss. |
-f |
Vergleichsausdruck zeigt auf eine Datei. |
-l |
Vergleichsausdruck zeigt auf einen Link. |
-s |
Vergleichsausdruck zeigt auf eine nicht leere Datei. |
-U |
Vergleichsausdruck zeigt auf eine gültige URL, welche der Client lesen darf. |
-F |
Vergleichsausdruck zeigt auf eine Datei, welche der Client lesen darf.. |
Beispiel: URL modifizieren bei Externen Aufrufen (Referer)
Hier mal ein konkretes Beispiel für eine mod_rewrite-URL-Modifikation. Wenn z.B: Suchmaschinen Seiten indexiert haben die so nicht aufgerufen werden dürfen, weil z.B. das die Seite umgebenden Layout für ein Shop-Produkt nicht angezeigt wird, dann kann man so erzwingen dass statt einer Seite "Frage zum Produkt", "Produkt weiterempfehlen" oder "Seite drucken" die besser geeignete Produktseite angezeigt wird.
RewriteCond %{HTTP_REFERER} !^http://www.zweimassenschwungrad.com/.*$
RewriteCond %{QUERY_STRING} ^(.*)&task=askquestion(.*)&tmpl=component(.*)$
RewriteRule (.*) /$1?%1%2%3 [R=301,L]
Hier ein paar bedeutsame Links mit weiteren Information zum Thema
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
http://www.modrewrite.de
http://forum.modrewrite.de
http://de.selfhtml.org/servercgi/server/rewrite.htm
http://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet.html
http://www.askapache.com/htaccess/htaccess.html