Apache – 在2.2 / 2.4中逻辑链接RewriteCond的限制

这些天我读了一篇关于[OR]优先于隐含[AND]的非常有趣的post 。 我真的很喜欢原来的问题以及高度赞赏的答案。

我最近偶然发现了有关这个话题的进一步的问题。

一旦您尝试expression以下内容,问题就会开始:

 RewriteCond A RewriteCond B RewriteCond C RewriteRule ... 

A OR (B AND C) 无论你放置[OR] ,它都不起作用:

 #resolves to (A OR B) AND C RewriteCond A [OR] RewriteCond B RewriteCond C RewriteRule ... #resolves to A AND (B OR C) RewriteCond A RewriteCond B [OR] RewriteCond C RewriteRule ... #makes no sense at all with no further cond after c RewriteCond A RewriteCond B RewriteCond C [OR] RewriteRule ... 

RewriteCon越多越好,因为你总是需要一个“伙伴”来把[OR]与:(我的发现是

您只能表示来自CNF的RewriteCond集( 连接范式 )。

其中,imho是相当巨大的,并且由于没有明确的[AND]以及不可能将两个Cond括在一起而引起。

PLEEEEASE纠正我,如果我错了,我真的希望我只是错过了一些东西! 并不是说你总是可以编写一个以上的规则来满足你的需求,但是这实际上让我感到困扰,因为我有一个真正的用户需求的例子。


TL; DR

第二个你试图expression

 (block of 'n' ANDs) OR X # with n > 0 # and X being a random logical expression (or in rewrite-terms: Rewrite-Cond set) 

不能用当前的逻辑运算符( [OR] !