Gero: Komplexer Regulärer Ausdruck

Hallo SelfHTML-Gemeinde,

ich will mit mod_rewrite die URLs "logisch verschönern".

Na klar, ich habe mir die entsprechenden Themen schon durchgelesen, nur scheitere ich an der Anfertigung des passenden regulären Ausdrucks. Die Ersetzung soll nach folgendem Muster geschehen:

http://test.com/ordner/unterordner/subunterordner/bezeichner.htm?parameter=wert&parameter2=wert2

Sollte ersetzt werden zu:

http://test.com/?a_1=ordner&a_2=unterordner&a_3=subunterordner&bez=bezeichner&parameter=wert&parameter2=wert2

So in etwa jedenfalls: Mein Problem nur aber: Die URL kann auch so aussehen (falls nämlich kein "subunterordner" besteht)

http://test.com/ordner/unterordner/bezeichner.htm

Wie gehe ich vor? Ich wäre sehr dankbar für eine Antwort.

Grüße,
  Gero

  1. hi,

    Mein Problem nur aber: Die URL kann auch so aussehen (falls nämlich kein "subunterordner" besteht)

    http://test.com/ordner/unterordner/bezeichner.htm

    Wie gehe ich vor?

    also ist der subordner optional.
    optionale teile kennzeichnest du in regulären ausdrücken mit einem fragezeichen.

    etwa so sollte das funktionieren (ungetestet):

    RewriteRukle ^/([a-z]+)/([a-z]+)/([a-z]+/)?([a-z]+).htm$ /?a_1=$1&a_2=$2&a_3=$3&bez=$4 [qsa]

    das flag qsa = query string append zum anhängen des originalen query strings.
    ob der ausdruck mit / beginnen muss, hängt von einer eventuellen RewriteBase ab.
    und ob das umleiten auf /?... klappt, weiß ich nicht. evtl. musst du den scriptnamen da doch angeben (schadet ja nix, ist ja eh nur intern, bekommt der benutzer nicht zu sehen).

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }