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

IIS配置301永久重定向规则后部分场景跳转不生效问题求助

配置错误原因

  • 错误1:{HTTP_HOST} 服务器变量仅包含域名部分,不携带http/https协议前缀,你原规则中pattern写的(http://)?(www)?olddomain\.(com)和(https://)?(www)?olddomain\.(com)永远无法匹配到请求,导致旧域名的判断逻辑完全失效。
  • 错误2:匹配非www前缀域名的正则^[^www]逻辑错误,[^www]是正则排除单个字符的语法,实际作用是匹配第一个字符不是w的域名,完全无法实现“匹配所有不带www前缀的域名”的需求。
  • 错误3:旧域名未配置SSL证书,所有https://开头的旧域名请求会先触发SSL证书校验失败错误,用户浏览器会先报不安全提示,根本无法走到重定向规则逻辑。
  • 错误4:你使用了301永久重定向,浏览器、搜索引擎都会长期缓存重定向结果,部分页面跳转符合预期部分不符合,本质是本地/CDN/搜索引擎缓存了之前的旧跳转规则,和新配置不统一导致的。

修正后的web.config重写规则

<rewrite>
    <rules>
        <clear />
        <!-- 规则1:所有旧域名请求直接跳转到新域名带www+HTTPS -->
        <rule name="Redirect OldDomain to NewDomain" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTP_HOST}" pattern="^(www\.)?olddomain\.com$" />
            </conditions>
            <action type="Redirect" url="https://www.newdomain.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
        <!-- 规则2:新域名强制HTTPS+www前缀 -->
        <rule name="Force NewDomain HTTPS and WWW" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTPS}" pattern="off" />
                <add input="{HTTP_HOST}" pattern="^newdomain\.com$" />
            </conditions>
            <action type="Redirect" url="https://www.newdomain.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

必须完成的配套操作

  1. 给旧域名olddomain.com和www.olddomain.com申请免费的SSL证书,并在服务器上完成配置,保证HTTPS访问旧域名时不会先报证书错误。
  2. 修正配置后先将redirectType改为Temporary(即302重定向)测试所有跳转逻辑正常后,再改回Permanent(301),避免错误规则被长期缓存。
  3. 清理浏览器缓存、CDN缓存,再提交Google Search Console重新抓取,清除之前缓存的错误跳转结果。

内容的提问来源于stack exchange,提问作者Gökhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:54:02