我在iis v 10.0.20348.1中启用了HSTS。
我在这里测试我的网站https://hstspreload.org,我收到此错误:
错误:HTTP 首先重定向到 www
(HTTP) 应立即重定向到http://example.com
(HTTPS) 在添加 www 子域之前。现在,第一个重定向 是https://example.com
。额外的重定向是 需要确保任何支持 HSTS 的浏览器都会记录 顶级域的 HSTS 条目,而不仅仅是子域。https://www.example.com/
对于从非 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>
欢迎任何修复错误的帮助和建议。谢谢。
好像是执行顺序导致的问题。请尝试在重写模块中使用多个规则来实现您的要求,如下所示:
<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>