【发布时间】:2013-08-09 15:24:23
【问题描述】:
您好,我有以下规则要导入到 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 中执行此操作的任何想法?
【问题讨论】:
-
IIS 重写模块不能对同一条规则执行
AND和OR(如果是一组条件,则为MatchAny或MatchAll)。 -
区分大小写的部分重要吗?
-
嗨 Cheesmacfly - 我不确定区分大小写是否重要。这是加强 Joomla 站点安全性的建议 htaccess 规则。从我的测试来看,这是导致问题的 request_method GET 行......有没有办法嵌套规则/条件?
-
或者,我可以将其分解为 3 个单独的规则并获得相同的结果吗?所以每个规则都会有请求方法条件,然后是带有规则的查询字符串条件之一?如果你看不出来,我是 htaccess/re-write 的菜鸟
-
刚刚发布了一个答案。我进行了一些测试,它应该可以工作,但如果没有,请告诉我。
标签: apache iis mod-rewrite rewrite