为什么SSI条件!= || !=不起作用?

时间:2012-08-29 01:13:11

标签: include ssi server-side-includes

我无法使用这个条件表达式

<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->

虽然!之前没有=的这个工作正常

<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->

有什么问题?我没有收到任何错误,!=虽然||不适用于其他条件,但适用于单一条件。

1 个答案:

答案 0 :(得分:2)

这是因为=!=几乎不是同一个运营商。请注意,De Morgan's law(我也是explained in this old post),

a != b || c != d

相当于

a = b && c = d
对于x = a && x = b a != b {/ 1}},

永远不会为真

更改二元运算符需要更改条件也是等效的。

因此,通过上述逻辑,

$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html

相当于

$DOCUMENT_NAME=index.html && $DOCUMENT_NAME=links.html

哪些无法为真,因为$ DOCUMENT_NAME可以是“index.html”“links.html”,但不是

然而,第二个片段,

$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html

“有效”因为没有上面提到的逻辑永远不真实的谬误。当$ DOCUMENT_NAME “index.html”或“links.html”时,情况就会如此。


某些语言/值会违反上述等效性。但这是另一个主题。