【问题标题】:Excluding a directory with ISAPI-Rewrite使用 ISAPI-Rewrite 排除目录
【发布时间】:2009-05-19 13:38:32
【问题描述】:

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

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

这是我的规则:

重写规则 ^(/api/)(.+)$ $1$2 [NC, L]

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

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

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

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

谢谢

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

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

【问题讨论】:

    标签: regex mod-rewrite isapi-rewrite


    【解决方案1】:

    原来这里发生了两件事:

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

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

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

    【讨论】:

    • 原来它可以更简单。 RewriteRule ^api/ - [NC,L]
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 2014-02-21
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      相关资源
      最近更新 更多