You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS URL Rewrite正则规则异常:特定路径排除重定向失效

IIS URL Rewrite 规则修正:排除ACME验证路径的重定向

问题根源

你的规则失效核心原因是{PATH_INFO}变量在IIS中的取值范围有限,且正则匹配逻辑不够精准。{PATH_INFO}仅返回URL中物理文件路径之后的额外部分,而ACME验证请求(如/.well-known/acme-challenge/xxx)没有对应物理文件,导致该变量为空,条件判断完全失效。

修正后的规则

<rule name="Redirect EXAMPLE.com to www.EXAMPLE.com" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^EXAMPLE\.com$" />
        <add input="{REQUEST_URI}" pattern="^/\.well-known/acme-challenge/.*$" negate="true" />
    </conditions>
    <action type="Redirect" url="https://www.EXAMPLE.com/{R:0}" redirectType="Permanent" />
</rule>

关键调整说明

  • 替换{PATH_INFO}为{REQUEST_URI}:{REQUEST_URI}会返回完整的请求路径(包含开头的/),能准确匹配ACME验证的根路径请求。
  • 修正正则表达式:将原正则^.*/\.well-known/acme-challenge/.*$改为^/\.well-known/acme-challenge/.*$,确保匹配从根目录起始的验证路径,避免误匹配其他子路径下的同名目录。
  • 显式声明logicalGrouping="MatchAll":明确要求两个条件同时满足才执行重定向(默认也是该逻辑,但显式写出更易维护)。
  • 添加redirectType="Permanent":返回301永久重定向,优化浏览器缓存和SEO表现,可选但推荐。

验证方法

用curl工具测试两种场景:

  1. 测试ACME验证路径(不应被重定向):
    curl -v http://EXAMPLE.com/.well-known/acme-challenge/test_validation
    
  2. 测试普通路径(应被重定向到www域名):
    curl -v http://EXAMPLE.com/about
    

内容的提问来源于stack exchange,提问作者Justin Swall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:25:09