且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

web.config 中的 IIS 重写规则将 HTTPS 请求重定向到 HTTP

更新时间:2021-07-16 09:21:34

我设置了你的规则,稍微清理了一下,它奏效了;所以这并不是真正的答案.

I set up your rule, cleaned up a little, and it worked; so this isn't really answering with much new.

建议:去掉onepage输入条件,仅供测试,如cheesmacfly在问题评论中建议的那样.

Suggestion: Remove the onepage input condition just for testing, as cheesmacfly suggested in the question comment.

此外,尝试将操作更改为 {R:1} 而不是 {R:0}.在这种情况下应该无关紧要,但我只是喜欢使用 1 及以上来匹配特定的捕获组.R:0 表示整个匹配的字符串,这总是让我有点困惑.

Also, try changing the action to {R:1} instead of {R:0}. It shouldn't matter in this case, but I just like using 1 and up, to match the specific capturing group. R:0 means the entire matched string, which always confuses me just a little.

<rule name="Redirect to HTTP" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^ON$" />
    </conditions>
    <action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

一种可能性是您的浏览器已经缓存了您之前的规则尝试.当 redirectType 为 Permanent 时,并且您仍在开发或测试中,浏览器通常会缓存以前的规则.清除浏览器缓存,和/或删除永久,和/或以隐身模式浏览.完成测试后,将其更改为永久.请参阅此答案中的数字 2 和 3:https://***.com/a/9204355/292060

One possibility is that your browser has cached a previous attempt of your rules. When the redirectType is Permanent, and you're still developing or testing, the browser often caches a previous rule. Clear your browser cache, and/or remove the Permanent, and/or browse in incognito mode. When done testing, change it to permanent. See number 2 and 3 in this answer: https://***.com/a/9204355/292060