1

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

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

这是我的规则:

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

请求看起来像这样:/api/v2/users?usernames=scottw

不幸的是,querstring 值总是被排除在外,并且 url 被重写为 /api/v2/users。

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

有什么建议么?还是排除目录的更好方法?

谢谢

更新:我也简化了规则,但这也没有改变任何东西:

重写规则 ^(/api/.+)$ $1

4

2 回答 2

2

事实证明这里发生了两件事:

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

最终似乎起作用的规则是:

RewriteRule ^(api/.+) $1 [NC,L]
于 2009-05-19T14:54:56.057 回答
0

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

于 2009-05-19T13:58:18.807 回答