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=""(.*)"" />
<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=""(.*)"" />
时没有错误并且 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
我在 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=""(.*)"" />
<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=""(.*)"" />
时没有错误并且 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