You need to enable JavaScript to run this app. IIS托管Angular应用:非www HTTPS访问正常,带www访问报404且重定向无效
优惠活动
大模型
产品
解决方案
定价
更多

IIS托管Angular应用:非www HTTPS访问正常,带www访问报404且重定向无效

故障排查方案

一、优先解决SSL层的证书不匹配问题(消除“连接不安全”提示)

浏览器弹出连接不安全提示是TLS握手阶段的故障,优先级远高于应用层的URL重定向规则:只要握手阶段证书校验不通过,web.config中配置的所有规则根本不会被执行。

  • 打开IIS管理器,进入目标站点的「绑定」配置界面:
    • 确认HTTPS(443端口)的绑定列表中,是否包含主机头为www.example.com的独立绑定,而非仅为非www域名配置了443绑定。
    • 双击当前443绑定使用的SSL证书,查看「使用者可选名称」列表,确认是否同时包含example.com和www.example.com两个域名;如果列表中只有非www域名,说明当初通过wacs工具申请证书时,没有将www域名加入证书的信任范围。
  • 修复操作:重新运行wacs工具,为现有证书补充www域名作为可选名称,完成证书自动部署后,在IIS绑定中新增对应www.example.com主机头的HTTPS条目。

二、排查重定向规则不生效的核心原因

完成证书层面的修复后,如果跳转规则仍未触发,按以下顺序排查:

  • 规则顺序配置错误:IIS的URL Rewrite模块是按从上到下的顺序匹配规则的,如果将www跳转规则放在Angular路由重写规则(即把所有非静态资源请求重写到index.html的规则)之后,请求会先被前端路由规则拦截,跳转逻辑根本不会执行。必须将域名标准化跳转的规则放在所有重写规则的最顶部。
  • 服务器级规则拦截:打开IIS根节点的URL Rewrite配置面板,切换到「查看服务器级规则」,确认是否存在全局规则对域名请求做了拦截,导致站点级web.config中的规则无法生效。
  • 规则属性缺失:原跳转规则未指定重定向类型,建议补充redirectType="Permanent"属性,让浏览器和搜索引擎正确识别永久跳转逻辑。

三、定位404错误的根因

  • DNS解析校验:确认www.example.com的A/CNAME记录指向和非www域名完全一致的服务器IP,避免解析错误将请求导向其他服务器触发默认站点的404响应。
  • 站点绑定冲突排查:检查同一服务器IP+端口的绑定列表,确认www.example.com的主机头没有被错误分配到其他无对应站点内容的站点上。IIS的主机头匹配优先级为精确主机头匹配>通配符绑定,如果www主机头被绑定到错误站点,请求根本不会进入目标站点的规则作用域,自然会返回404。

四、可直接复用的正确重定向配置

将以下规则放在web.config的<rewrite>/<rules>节点最顶部,确保域名跳转逻辑优先执行:

<rule name="Redirect WWW to non-WWW" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
  </conditions>
  <action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
</rule>

配置完成后按顺序验证:

  1. 测试443端口对www域名的证书返回结果,确认证书同时覆盖两个域名,无握手报错。
  2. 清空浏览器缓存后访问www域名,通过开发者工具的网络面板确认请求返回301永久跳转状态,正确导向非www域名下的对应路径。
  3. 确认跳转完成后,Angular前端路由可正常加载,无404报错。

内容的提问来源于stack exchange,提问作者Gabriele Ottanelli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 18:54:10