您好我有以下规则要导入IIS URL重写:
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]
但是,使用导入时,我收到此错误: 此规则未转换,因为只有部分条件使用OR标志。
有关如何在IIS中执行此操作的任何想法吗?
答案 0 :(得分:1)
正如我的评论中所提到的,IIS重写模块无法为同一规则执行AND
和OR
(当它是一组条件时,它是MatchAny
或{ {1}})。
以下是解决问题的方法:
MatchAll
它使用逻辑<rule name="My rule" stopProcessing="true">
<match url=".*" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_METHOD}" pattern="GET" />
<add input="{QUERY_STRING}" pattern="[a-zA-Z0-9_]=(http://)|(\.\.//?)+|(/([a-z0-9_.]//?)+)" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
(OR)运算符“{组合”了您只有一个的所有3个规则:|
。