Ist dies die Verwendung von AND, OR für RewriteCond
Apache?
rewritecond A [or]
rewritecond B
rewritecond C [or]
rewritecond D
RewriteRule ... something
wird if ( (A or B) and (C or D) ) rewrite_it
.
Es scheint also, dass "ODER" eine höhere Priorität hat als "UND"? Gibt es eine Möglichkeit, dies leicht zu erkennen, wie in der (A or B) and (C or D)
Syntax?
mod-rewrite
apache-config
Unpolarität
quelle
quelle
Antworten:
Dies ist eine interessante Frage, und da sie in der Dokumentation nicht sehr explizit erklärt wird, beantworte ich sie, indem ich den Quellcode von mod_rewrite durchführe . Demonstration eines großen Vorteils von Open Source .
Im oberen Bereich finden Sie schnell die Definitionen, mit denen diese Flags benannt werden :
Wenn Sie nach CONDFLAG_ORNEXT suchen, wird bestätigt, dass es basierend auf dem Vorhandensein des [OR] -Flag verwendet wird :
Das nächste Vorkommen des Flags ist die eigentliche Implementierung, in der Sie die Schleife finden, die alle RewriteConditions durchläuft, die eine RewriteRule hat, und im Grunde genommen (entfernt, Kommentare zur Klarheit hinzugefügt):
Sie sollten dies interpretieren können; Dies bedeutet, dass der OP eine höhere Priorität hat und Ihr Beispiel tatsächlich dazu führt
if ( (A OR B) AND (C OR D) )
. Wenn Sie zum Beispiel folgende Bedingungen hätten:es würde interpretiert werden als
if ( (A OR B OR C) and D )
.quelle
Nach vielen Kämpfen und um eine allgemeine, flexible und besser lesbare Lösung zu finden, habe ich in meinem Fall die Ergebnisse des OP in ENV- Variablen gespeichert und das UND dieser Variablen durchgeführt.
Anforderungen :
quelle