HTTPS重定向重写规则在IIS中不起作用

HTTPS重定向重写规则在IIS中不起作用,iis,url-rewriting,Iis,Url Rewriting,我们的网站位于IIS 10中,由有效的SSL证书覆盖。它在地址的https版本下工作正常 为了捕获http流量并重定向它,我在web.config中添加了一个重写规则,如下所示: <rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="(.*)" negate="false" /> <conditi

我们的网站位于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\u EMPTY\u响应错误

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

<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_响应,这也不起作用

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

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


不知我做错了什么?

此站点在端口80上是否有命名绑定?您可以从服务器本地访问端口80吗?是否有本地或上游防火墙?检查访问日志您是否看到对端口80的请求?如果是,那么子状态和win32错误代码是什么?@mistersmith端口80上有一个绑定,但未命名。我不能说出它的名字,当然-我试过了,整个网站都被关闭了?你的IIS设置如何?有多少个网站被设置?你还有默认的网站吗?这些设备上有什么绑定?@mattshower可能是个愚蠢的问题,但您是否尝试过在其他计算机和不同浏览器上浏览http版本?另外,清除浏览器缓存和尝试声音,就像你在某处遇到防火墙问题一样?如果您将主机文件设置为覆盖域的dns,并将其指向127.0.0.1(即localhost)。然后你能在本地访问你的站点吗?