Sven Rautenberg: mod_Rewrite übertirfft alle ?

Beitrag lesen

RewriteRule ^/login/([^/]*)$ /login/%1/$1 [L,R]

was bedeutet da was ?

Es sind ja zwei Teile: Einmal das Muster, nach dem gesucht wird, und dann das Muster, welches neu zusammengesetzt wird.

^/login/([^/]*)$

Das ist das Suchmuster - ein regulärer Ausdruck.

^ - Zeilenanfang. Bedeutet: Der String muß mit dem, was danach kommt, anfangen, es sind keine Zeichen davor erlaubt.

/login/ - Der String "/login/"

([^/]*) - Das zerfällt in
          [^/] - Beliebige Zeichen, die kein "/" sind (^ hat hier eine andere Bedeutung).
          * - Beliebig viele (0 bis unendlich) des vorhergehenden (also [^/]).
          ( ) - Der Inhalt der Klammern steht später als Variable zur Verfügung (hier genauer: als $-Variable. Und da es die erste Klammer im Ausdruck ist, eben als $1).

$ - Zeilenende. Genau wie am Anfang muß der String mit dem vorhergeneden Zeichen enden.

Zweiter Teil:

/login/%1/$1

Hier kommen nur ganz normale Zeichen und Variablen vor.

/login/ - die Zeichenkette "/login/"
%1 - Die erste Klammer aus der RewriteCond - also der Username.
/ - Die Zeichenkette "/"
$1 - Die erste Klammer aus der RewriteRule - also das, was als ([^/]*) gefunden wurde.

müsste das nicht so aussehen:
RewriteRule ^/login/([^/]*)$ ^/login/% [L,R]

Nö, denn was heißt "%"? Dahinter ist zwingend eine Ziffer anzugeben.

Wenn du von /login/irgendwas.html auf /login/djwoelk/irgendwas.html umgeleitet werden willst, muß die Regel eher so aussehen, wie ich geschrieben habe - Fehler darin sind aber natürlich möglich.

- Sven Rautenberg