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

 

 

zms-LinkTest