重写规则转换为IIS 7.5

时间:2013-08-08 02:49:53

标签: apache iis mod-rewrite rewrite

您好我有以下规则要导入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中执行此操作的任何想法吗?

1 个答案:

答案 0 :(得分:1)

正如我的评论中所提到的,IIS重写模块无法为同一规则执行ANDOR(当它是一组条件时,它是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个规则:|