mod_rewrite RewriteCond: nachgefragt
Verfasst: 26.08.2005, 00:59
Hallo,
seit einiger Zeit schlage ich mich mit mod_rewrite herum und habe da so meine Sorgen....
Konkret:
Ich überschreibe Urls in der Form
www.mydomain.de/name1/name2/param1.param2...param9/
in
www.mydomain.de/script.php?p1=param1&p2 ... .p9=param9
Meine Regeln sehen vereinfacht etwa so aus:
RewriteRule ^/name1/name2/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....
Ich will aber nicht alle URLs überschreiben und möchte aus Perfomance-und Esthetik-Gründen
Requests auf nicht überschriebene php-Scripte gar nicht erst gegen meine Regeln laufen lassen:
RewriteEngine On
RewriteLogLevel 9
RewriteLog "MyLog"
RewriteCond %{SCRIPT_FILENAME} !^/.*\.php\?.*$
RewriteRule ^/name1/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2.... [L]
RewriteRule ^/name2/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....[L]
...
(Die Regeln tippse ich gerade so zusammen, man möge Syntax-Fehler nachsehen ... )
Wenn ich mir MyLog ansehe,entdecke ich: (Request: /newscript.php?foo=bar)
[inital] init Rewrite engine with requested uri /newscript.php
[inital] applying pattern <patten1> to uri /newscript.php
[inital] applying pattern <patten2> to uri /newscript.php
....
(alle Regeln werden durchgenudelt!)
passthru /newscript.php
(und das ganze nocheinmal (redir#1)
[inital/redir#1] init Rewrite engine with requested uri /newscript.php
[inital/redir#1] applying pattern <patten1> to uri /newscript.php
[inital/redir#1] applying pattern <patten2> to uri /newscript.php
....
Was ist mit meiner RewriteCond???????
Der Dokumentation entnehme ich:
Precede a RewriteRule directive with one or more RewriteCond directives. The following rewriting rule is only used if its pattern matches the current state of the URI and if these additional conditions apply too.
Heisst das, es geht nur *eine* Regel nach einer RewriteCond?
Kann ich durch (m)eine RewriteCond gar nicht verhindern, daß die Regeln angewandt werden?
Wie kann ich es schaffen, das mod_rewrite bei uri newscript.php?... schon vorher quasi abbiegt?
Wann wird den die Bedingung geprüft? Habe jetzt schon einige Zeit rumgeforscht und es sieht so aus, als würden meinen Bedingungen überhaupt nicht ziehen %-( und langsam geht mir die Zeit aus....
Was mache ich falsch?
Wo ist mein Denk- oder Konzeptionsfehler?
kann mir hier jemand weiterhelfen?
Bin für jeden Rat dankbar...
Viele Gruhuß
whobee
p.s. Kennt jemand eine verständliche Docu zu mod_rewrite????
seit einiger Zeit schlage ich mich mit mod_rewrite herum und habe da so meine Sorgen....
Konkret:
Ich überschreibe Urls in der Form
www.mydomain.de/name1/name2/param1.param2...param9/
in
www.mydomain.de/script.php?p1=param1&p2 ... .p9=param9
Meine Regeln sehen vereinfacht etwa so aus:
RewriteRule ^/name1/name2/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....
Ich will aber nicht alle URLs überschreiben und möchte aus Perfomance-und Esthetik-Gründen

RewriteEngine On
RewriteLogLevel 9
RewriteLog "MyLog"
RewriteCond %{SCRIPT_FILENAME} !^/.*\.php\?.*$
RewriteRule ^/name1/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2.... [L]
RewriteRule ^/name2/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....[L]
...
(Die Regeln tippse ich gerade so zusammen, man möge Syntax-Fehler nachsehen ... )
Wenn ich mir MyLog ansehe,entdecke ich: (Request: /newscript.php?foo=bar)
[inital] init Rewrite engine with requested uri /newscript.php
[inital] applying pattern <patten1> to uri /newscript.php
[inital] applying pattern <patten2> to uri /newscript.php
....
(alle Regeln werden durchgenudelt!)
passthru /newscript.php
(und das ganze nocheinmal (redir#1)
[inital/redir#1] init Rewrite engine with requested uri /newscript.php
[inital/redir#1] applying pattern <patten1> to uri /newscript.php
[inital/redir#1] applying pattern <patten2> to uri /newscript.php
....
Was ist mit meiner RewriteCond???????
Der Dokumentation entnehme ich:
Precede a RewriteRule directive with one or more RewriteCond directives. The following rewriting rule is only used if its pattern matches the current state of the URI and if these additional conditions apply too.
Heisst das, es geht nur *eine* Regel nach einer RewriteCond?
Kann ich durch (m)eine RewriteCond gar nicht verhindern, daß die Regeln angewandt werden?
Wie kann ich es schaffen, das mod_rewrite bei uri newscript.php?... schon vorher quasi abbiegt?
Wann wird den die Bedingung geprüft? Habe jetzt schon einige Zeit rumgeforscht und es sieht so aus, als würden meinen Bedingungen überhaupt nicht ziehen %-( und langsam geht mir die Zeit aus....
Was mache ich falsch?
Wo ist mein Denk- oder Konzeptionsfehler?
kann mir hier jemand weiterhelfen?
Bin für jeden Rat dankbar...
Viele Gruhuß
whobee
p.s. Kennt jemand eine verständliche Docu zu mod_rewrite????
