wahsaga: Apache & mod_rewrite: unnötiger Subrequest?

Beitrag lesen

hi,

Was mich hierbei aber wundert - wieso kommt "applying pattern" vor der Prüfung der RewriteCond?

Das kann ich dir aus dem Stand so nicht beantworten, ich würde aber raten, dass der Gedankengang "wenn das Pattern nicht matcht, können wir uns die Bedingungen sparen" dahinter steckt.

Na und mein Gedankengang wäre eher "wenn die Bedingung nicht erfüllt ist, können wir uns das Prüfen des Patterns sparen" :-)

Die Arbeitsweise steht aber auch im Manual so beschrieben.

Hm, wo genau?
In der Beschreibung zur RewriteCond in der Erklärung zu mod_rewrite für den 1.3er Indianer finde ich nur:

"The RewriteCond directive defines a rule condition. 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."

Gut, das kann man so oder so auslegen - eine eindeutige Aussage über die Reihenfolge der Abarbeitung trifft es nicht.

Aber warum tauchen jetzt die letzten 4 Zeilen dort auch noch auf?

Vorsicht: interner Redirect != interner Sub-Request.

Hm, was genau ist jetzt der Unterschied?

Auf das erste Umschreiben des Requests,
[rid#13c8bc8/initial] (2) [per-dir j:/web/htdocs/test/rwlog/] rewrite xyz -> rw.php?param=xyz
folgt dann
[rid#13c8bc8/initial] (3) split uri=rw.php?param=xyz -> uri=rw.php, args=param=xyz
...

Immer noch nur /initial, noch keine Rede von einem Redirect.

Ein paar Zeilen später geht's dann mit
[rid#13cdc30/initial/redir#1] (3) [per-dir j:/web/htdocs/test/rwlog/] strip per-dir prefix: j:/web/htdocs/test/rwlog/rw.php -> rw.php
weiter - hier taucht jetzt /redir#1 auf, das wäre dann jetzt ein interner Redirect?

Als mir halbwegs einleuchtende Erklärung finde ich in der Doku nur:
"For instance, sub-requests occur internally in Apache when mod_include tries to find out information about possible directory default files (index.xxx)."
Wenn das also ein interner Sub-Request wäre - wo genau ist der Unterschied zum internen Redirect?
Liegt er darin, dass der Redirect erneut in das Processing der RewriteRules etc. eingespeist wird, und der Sub-Request nicht ...?

gruß,
wahsaga

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