首页 > 解决方案 > HTTPS 重定向重写规则在 IIS 中不起作用

问题描述

我们的网站托管在 IIS 10 中,由有效的 SSL 证书覆盖。它在地址的 https 版本下工作正常。

为了捕获 http 流量并重定向它,我在 web.config 中添加了一个重写规则,如下所示:

<rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="(.*)" negate="false" />
    <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

我以前用过这个,希望它能正常工作。但是在此服务器上,它似乎不起作用。尝试通过 http 访问该站点会产生 ERR_EMPTY_RESPONSE 错误。

我搜索了一堆教程,其中大部分似乎都支持我得到的重写。但是,我确实找到并尝试了这个略有不同的版本

<rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
      <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>

但这也不适用于与 http 相同的 ERR_EMPTY_RESPONSE。

该站点通过 443 上的主机名绑定到 https,并在端口 80 上绑定了一个空主机名。

其他重写规则(例如基于 IP 的访问白名单)似乎工作正常,因此重写模块不太可能出现问题。

不知道我做错了什么?

标签: iisurl-rewriting

解决方案


推荐阅读