Thread mod_rewrite und logische Fallunterscheidung (15 answers)
Opened by cbxk1xg at 2004-04-16 16:31

jan
 2004-04-16 23:25
#30694 #30694
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
uhm, jetzt wird mir schlagartig wieder klar, warum ich immer heilfroh war, wenn ich meine rewrite-conditions und -rules fertig habe, alles funktioniert und ich wieder die finger davon lassen kann...
also, mit doku und ein bisschen hoffnung habe ich mir folgendes zusammengereimt:
Code: (dl )
1
2
3
4
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} .*/([^/]+\.htm)$
RewriteCond /-/Cache/%1 -s
RewriteRule .* /-/Cache/%1 [L]

für das prüfen, ob datei im cache. zweite zeile: haben wir ein match auf eventuell-irgendwas (.*), dann einen /, ab jetzt bitte backreferencing an (klammer auf), mindestens ein zeichen aus der gruppe aller zeichen außer / (versuch, den dateinamen zu bekommen), dann einen punkt und htm, jetzt backreferencing ende und das ganze am ende des REQUEST_URI. sollte nun eigentlich in den backreferencing den dateinamen inklusive .htm haben, wenn ich mich nicht irre. also testen wir in der nächsten zeile (3), ob /-/Cache/%1 (%N ist eine backref auf den letzten match in einer RewriteCond, $N ist für das RUle-Matching) existiert - wenn beides zutrifft (d.h. ein dateinamen mit .htm extrahiert werden kann und selber im verzeichnis /-/Cache/ existiert und größer als 0 byte ist (-s)), dann mach einen rewrite von allem .* nach /-/Cache/%1 (nochmal bezug auf oben gematchten dateinamen) und lassen das ganze damit gut sein [L].

bei der zweiten müsste das nun, wenn ich nicht irre, nur
Code: (dl )
1
2
3
4
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} .*/([^/]+\.htm)$
RewriteCond /-/Cache/%1 !-s
RewriteRule .* /-/?PID=static/%1 [T=application/x-httpd-cgi,L]

sein. teste das am besten mal, vielleicht geht's ja in die richtige richtung und ein bisschen ausprobieren sorgt dafür, dass sich das ganze zurechtruckelt ;)\n\n

<!--EDIT|jan|1082143572-->

View full thread mod_rewrite und logische Fallunterscheidung