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

Azure App Service HTTPS下URL重写失效问题求助

解决HTTPS下旧域名跳转的证书主机名不匹配问题

看来你在旧域名HTTPS跳转新域名时踩了证书的典型坑——这个问题其实很常见,核心逻辑得先理清楚:HTTPS的TLS握手是在URL重写规则执行之前发生的,所以你之前的操作漏掉了最关键的旧域名HTTPS证书配置环节,才导致了证书主机名不匹配的错误。

问题根源拆解

当用户访问旧域名的HTTPS链接时,浏览器会先和服务器完成TLS握手:验证服务器返回的SSL证书是否与当前访问的域名匹配。如果你的Azure服务或web服务器没有为旧域名(包括子域名)配置对应的有效证书,握手直接失败,这时候你的web.config重写规则根本没机会执行,自然就弹出证书错误了。

具体解决步骤

  1. 为旧域名配置对应SSL证书

    • 在Azure平台(比如App Service)中,为所有需要跳转的旧域名(含子域名)绑定有效的SSL证书。推荐使用通配符证书(如*.old-domain.com),这样能一次性覆盖所有子域名,避免逐个配置的麻烦;也可以使用Azure自带的App Service证书,或者上传你自己的单域名证书。
    • 注意:证书必须包含你要跳转的所有旧域名(包括www前缀、子域名等),否则依然会出现主机名不匹配。
  2. 验证Azure的HTTPS监听与证书关联

    • 登录Azure门户,进入你的服务(如App Service)的「自定义域名」页面,检查旧域名的HTTPS选项是否已开启,并且证书是否正确关联到该域名。确保每个需要跳转的旧域名都完成了这一步配置。
  3. 优化URL重写规则(确保覆盖全场景)
    你的重写规则本身没问题,但可以调整为同时兼容HTTP和HTTPS场景,确保所有请求都能正确跳转:

    <rule name="Redirect Old Domain to New Domain" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <!-- 匹配所有需要跳转的旧域名,包括子域名 -->
        <add input="{HTTP_HOST}" pattern="^old-domain.com$|^www.old-domain.com$|^sub.old-domain.com$" />
      </conditions>
      <action type="Redirect" url="https://new-domain.com/{R:1}" redirectType="Permanent" />
    </rule>
    
  4. 可选:为旧域名添加强制HTTPS规则
    如果需要先把旧域名的HTTP请求强制转为HTTPS再跳转,可以在上述规则之前添加这条(前提是已经完成旧域名的证书配置):

    <rule name="Force HTTPS for Old Domain" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" />
        <add input="{HTTP_HOST}" pattern="^old-domain.com$|^www.old-domain.com$|^sub.old-domain.com$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
    

验证效果

完成配置后,用不同浏览器访问旧域名的HTTPS链接,或者使用SSL Labs的服务器测试工具检查证书有效性,确保所有旧域名的HTTPS请求都能顺利完成握手并跳转到新域名。

内容的提问来源于stack exchange,提问作者John Reiner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:19