使用ISAPI-Rewrite排除目录

时间:2009-05-19 13:38:33

标签: regex mod-rewrite isapi-rewrite

我试图用ISAPI-Rewrite排除目录(注意:这是mod-rewrite的windows / iis端口)。

我想要排除的目录是“api”,当它位于网站的根目录时。

这是我的规则:

RewriteRule ^(/ api /)(.+)$ $ 1 $ 2 [NC,L]

请求看起来像这样: / API / V2 /用户?用户名= scottw

不幸的是,始终排除了querstring值,并且将url重写为/ api / v2 / users。

我在假设(。+)捕获其他所有内容的情况下进行攻击。

有什么建议吗?或者更好的方法来排除目录?

谢谢

更新:我也简化了规则,但这并未改变任何内容:

RewriteRule ^(/ api /.+)$ $ 1

2 个答案:

答案 0 :(得分:2)

原来有两件事情在这里:

  1. 正则表达式应该是^(api /)而不是^(/ api)。第一个“/”被排除在外。
  2. ISAPI_Rewrite附带的正则表达式解析器工具似乎无法正确处理查询字符串。
  3. 最终似乎有效的规则是:

    RewriteRule ^(api/.+) $1 [NC,L]
    

答案 1 :(得分:0)

我有时会看到'。+'很奇怪,你可能会尝试切换到'.. *'我不是说它会起作用,但它可能值得一试。