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

IIS 8 URL Rewrite模块:非WWW转WWW(排除子域名)需求

解决IIS 8 URL Rewrite子域名被误添加WWW前缀的问题

我明白你遇到的困扰了——原本只想把主域名(比如example.com)的非WWW版本重定向到www.example.com,结果连子域名(比如api.example.com)也被自动加上了www.前缀,完全不符合预期。咱们只需要给规则加个精准的条件判断,就能让主域名和子域名的行为区分开。

修改后的URL Rewrite规则

把你原来的规则替换成下面这段配置,注意把example.com替换成你自己的主域名:

<system.webServer>
  <rewrite>
    <globalRules>
      <clear />
      <rule name="non-www to www (only main domain)" enabled="true" stopProcessing="true">
        <match url=".*" />
        <!-- 关键条件:仅当请求的主机头是纯主域名时才触发规则 -->
        <conditions>
          <add input="{HTTP_HOST}" pattern="^example\.com$" />
        </conditions>
        <!-- 重定向到带WWW的主域名,保留原URL路径 -->
        <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
      </rule>
    </globalRules>
  </rewrite>
</system.webServer>

规则关键点解释

  • 条件判断:<add input="{HTTP_HOST}" pattern="^example\.com$" /> 这一行是核心,它会检查当前请求的主机头是否正好是你的纯主域名(没有任何子域名前缀)。像api.example.com这类子域名会因为不满足这个正则匹配,完全跳过这条规则。
  • 重定向设置:redirectType="Permanent" 表示返回301永久重定向,对搜索引擎SEO更友好;{R:0} 会保留原请求的完整URL路径,确保用户访问example.com/page1时会被正确转到www.example.com/page1。
  • stopProcessing="true":设置为true可以避免这条规则执行后,后续的其他规则继续处理该请求,提升效率同时防止冲突。

扩展说明

如果你的主域名有多个后缀(比如example.com和example.net),可以修改正则表达式来匹配多个主域名:

<add input="{HTTP_HOST}" pattern="^example\.(com|net)$" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:17:41