【问题标题】:IIS Rewrite rule for non-www to www not working非www到www的IIS重写规则不起作用
【发布时间】:2026-01-25 22:05:02
【问题描述】:

我们有很多使用 Flex 托管在 IIS 中的网站。它们中的每一个都有相当多的重写/重定向规则。其中一个现在需要重写规则来将非 www url 定向到 www url。已经从包括其他 SO 问题在内的各个站点尝试了很多流行的解决方案。我最后一次尝试如下,但没有多大用处:

<rule name="Redirect to WWW" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^your.domain.name$" />
      </conditions>
      <action type="Redirect" url="http://www.your.domain.name/{R:0}" redirectType="Permanent" />
</rule>

【问题讨论】:

  • 这对我来说似乎工作得很好。在哪些情况下不起作用?
  • @PeterHahndorf - 正则表达式周围的括号起到了作用。

标签: iis url-rewrite-module


【解决方案1】:
  1. 确保您拥有最新的 URL 重写扩展。
    https://www.iis.net/downloads/microsoft/url-rewrite
  2. 在测试结果之前,请清理本地缓存。我们最好在一个私密的窗口中验证它。

此外,Failed Request Tracing 是解决请求处理故障的强大工具。 FRT 可与 URL 重写模块一起使用,以跟踪如何将重写规则应用于请求 URL。
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules
最后,请尝试以下配置。

<rule name="Force www" enabled="true" stopProcessing="false">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^example\.com$" />
        </conditions>
        <action type="Redirect" url="https://www.example.com{REQUEST_URI}" />
</rule>

如果问题仍然存在,请随时告诉我。

【讨论】: