HSTS 和重定向 IIS 10

问题描述 投票:0回答:1

我在iis v 10.0.20348.1中启用了HSTS。

  • 启用HSTS
  • 启用包含子域
  • 启用预载
  • 启用将 Http 重定向到 Https

我在这里测试我的网站https://hstspreload.org,我收到此错误:

错误:HTTP 首先重定向到 www

http://example.com
(HTTP) 应立即重定向到
https://example.com
(HTTPS) 在添加 www 子域之前。现在,第一个重定向 是
https://www.example.com/
。额外的重定向是 需要确保任何支持 HSTS 的浏览器都会记录 顶级域的 HSTS 条目,而不仅仅是子域。

对于从非 www 到 www 的重定向,我有一个规则:

<rule name="Imported Rule 1" stopProcessing="true">
  <match url="^(.*)$" ignoreCase="false" />
  <conditions logicalGrouping="MatchAll">
  <add input="{HTTP_HOST}" pattern="^www\." ignoreCase="false" negate="true" />
  </conditions>
  <action type="Redirect" url="https://www.{HTTP_HOST}{URL}" redirectType="Permanent" />
</rule>

欢迎任何修复错误的帮助和建议。谢谢。

iis web-config iis-10 hsts
1个回答
0
投票

好像是执行顺序导致的问题。请尝试在重写模块中使用多个规则来实现您的要求,如下所示:

<rule name="Redirect to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
        <add input="{HTTP_HOST}" pattern="^hstspreload.org$" />
    </conditions>
    <action type="Redirect" url="https://hstspreload.org/{R:1}" redirectType="Permanent" />
</rule>

<rule name="Redirect to www on HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^hstspreload.org$" />
        <add input="{HTTPS}" pattern="on" />
    </conditions>
    <action type="Redirect" url="https://www.hstspreload.org/{R:1}" redirectType="Permanent" />
</rule>
© www.soinside.com 2019 - 2024. All rights reserved.