IIS 8 - HTTP 到 HTTPS URL 重写不工作 - ASP.NET 站点 - 文档已移动

IIS 8 - HTTP to HTTPS URL rewrite not working - ASP.NET site - Document moved

我在 Windows Server 2012 R2

上安装了 IIS 8

已按照 these steps 配置 http 到 https 所以当点击 http://a5.example.com, user is redirected to https://a5.example.com

但是 http 到 https 的重定向不起作用。 已禁用在 IIS 上需要 SSL

web.config:

<system.webServer>
        <rewrite>
            <rules>
                <rule name="Http to HTTPS" enabled="true" stopProcessing="true">
                    <match url="&quot;(.*)&quot;" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

如果我删除模式中的引号

<match url="(.*)" />

键入时出错 http://a5.example.com

已尝试 these solutions and these 但无济于事

@JennyDai 回答后更新:

目前无法更改源代码(设置 AllowAutoRedirect)

启用 ARR 代理

但一旦在 web.config 我指定

<match url="(.*)" />

然后转到 http://a5.example.com 出现与上图相同的错误(文档已移动),https://a5.example.com/ws/services.asmx 可用

当设置 <match url="&quot;(.*)&quot;" /> 时没有错误并且 http 到 https 不起作用。

您可以成功访问服务link https://XXX/ws/Services.asmx吗?好像重定向到HTTPS后,访问不了了。请尝试将 AllowAutoRedirect 属性 设置为 true.

如果还是不行,您也可以尝试以下方法:

IIS反向代理和URL重写共同实现https重定向。

您需要在网络平台安装程序中安装ARR 模块。安装完成后可以在服务节点看到Application Request Routing Cache模块,double-click打开,selectServer Proxy Settings勾选Enable proxy,不需要修改内容,当然你可以根据自己的需要修改。点击应用完成请求路由设置。最后在站点中设置重写规则:

你可以参考我的一些建议,尝试解决这个问题。

找到答案,无需安装Applicarion请求路由,只需要修改URL重写规则:

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

网站依赖于网络服务并被配置为在 http:// 上与它(/ws/Services.asmx url)对话,所以当网站使用 http 调用网络服务时:// 请求被 https 重定向规则捕获,该规则向其发送重定向响应 header(301 找到消息)。因此,最初的 POST 调用得到了 301 响应,将其重定向到 https:// url,这不是网站所期望的,因此网络服务调用(POST)基本上丢失了并且好像网络服务无法访问导致出现错误消息。

Web 服务的 url 可在 web.config 文件中配置,因此网站现在使用 https:// 直接调用 Web 服务,不需要 ARR