![IIS 8.5 URL 重写不起作用:规则根本没有效果](https://linux22.com/image/663621/IIS%208.5%20URL%20%E9%87%8D%E5%86%99%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9A%E8%A7%84%E5%88%99%E6%A0%B9%E6%9C%AC%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C.png)
我正在尝试使用 Rewrite 模块在 IIS 8.5 中设置 http 到 https 重写。我尝试过的所有方法都没有任何效果。URL 的格式如下:http://users-dev.somedomain.com。当前在web.config中创建的规则是:
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
从那时起,我尝试了很多变化。之前,我修改 URL 重写时,可以看到各种规则生效,但现在看来,我所做的一切都没有任何效果……我怀疑 IIS 出了问题。我还尝试过重新启动 IIS,但无济于事……
有任何想法吗?
答案1
事实证明,在站点 SSL 设置下,“需要 SSL”复选框被选中。如果选中该复选框,客户端根本无法通过端口 80,并且重写永远不会发生……
如果您正在使用重写模块,则无法选中“需要 SSL”,因为初始请求需要能够通过端口 80。
答案2
好吧,我认为我在 IIS 8.5 上遇到了与 MrLane 相同的情况。
我花了一天时间才发现我的网站没有在 80 端口上运行。
我只需添加此绑定(端口 80),规则即可按预期工作。
希望这可以帮助解决 MrLane 的案件。
答案3
这对我有用:
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>