![HTTP 到 HTTPS 重写导致“重定向次数过多”错误](https://linux22.com/image/722021/HTTP%20%E5%88%B0%20HTTPS%20%E9%87%8D%E5%86%99%E5%AF%BC%E8%87%B4%E2%80%9C%E9%87%8D%E5%AE%9A%E5%90%91%E6%AC%A1%E6%95%B0%E8%BF%87%E5%A4%9A%E2%80%9D%E9%94%99%E8%AF%AF.png)
我正在尝试在 IIS 8.5 上针对特定网站从 http 重定向到 https。我按照说明操作这里(和这里),复制答案中的确切 web.config 文件。启用顶部规则后,我在所有浏览器中都收到“重定向过多”错误。禁用该规则可停止该错误。
站点“bindings...”配置了端口 80 和 443,并为 443 绑定分配了有效证书。已安装“URL Rewrite”模块。
这个 Win 2012 VM 位于 F5 负载均衡器后面,除了打开数据中心的票证外,我无法访问它。
目标是将此特定站点的所有 http 请求重定向到 https。此站点只是一个带有静态 index.html 文档的测试站点。
确切的 web.config 是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
答案1
我的 IIS 服务器位于 F5 负载平衡器后面,这是导致此问题的原因。我让数据中心管理其端从 http 到 https 的所有重定向。