求助:IIS 7取消HTTPS绑定后仍强制重定向至HTTPS如何恢复?
解决IIS移除HTTPS绑定后仍自动重定向的问题
这种情况我之前也碰到过好几次,大概率是隐蔽的配置残留或缓存问题导致的,你按下面的步骤逐一排查:
1. 清除浏览器HSTS缓存
现代浏览器会强制记住开启过HTTPS站点的HSTS规则,哪怕服务器端已关闭HTTPS,浏览器仍会自动跳转。
- Chrome/Edge:在地址栏输入
chrome://net-internals/#hsts(Edge用edge://net-internals/#hsts),找到「Delete domain security policies」,输入你的站点域名(比如localhost或业务域名),点击Delete。 - Firefox:地址栏输入
about:config,搜索network.stricttransportsecurity.preloadlist右键选择「Reset」;再搜索network.stricttransportsecurity.hosts,删除对应域名的条目。
2. 检查IIS URL重写规则
配置HTTPS时添加的重定向规则,可能在删除绑定后仍残留:
- 打开IIS管理器,选中目标站点,双击「URL重写」模块。
- 查看是否存在类似「HTTP to HTTPS Redirect」的规则,如有则右键删除,重启站点。
- 别忘了检查服务器全局级别的URL重写规则(IIS根节点的「URL重写」),避免全局配置影响单个站点。
3. 手动检查web.config配置
如果可视化界面没找到规则,直接打开站点根目录的web.config文件:
- 搜索
<rewrite>节点,若存在强制跳HTTPS的规则,删除整个相关节点(确认无其他有用规则后),保存后重启站点。
4. 清除HTTP响应头中的HSTS配置
部分站点会设置Strict-Transport-Security响应头,强制浏览器使用HTTPS:
- 在IIS管理器中打开站点的「HTTP响应头」,查找名为
Strict-Transport-Security的条目,如有则删除。 - 同样检查服务器全局级别的HTTP响应头,排除全局配置干扰。
5. 排查应用代码中的重定向逻辑
如果你的站点是ASP.NET、PHP等开发的,代码里可能硬写了强制HTTPS的逻辑:
- ASP.NET:检查是否使用
RequireHttpsAttribute过滤器,或Global.asax中的重定向代码; - PHP:查找
header("Location: https://...")这类跳转代码; - 清理项目中全局过滤器、启动类或通用页面里的强制HTTPS逻辑。
6. 极端情况:清理注册表残留绑定信息
如果以上步骤都无效,可能是注册表残留了SSL绑定信息:
- 按下Win+R输入
regedit打开注册表编辑器; - 导航到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo,删除对应站点IP和443端口的条目; - 执行命令重启HTTP服务:
net stop http && net start http(注意:此操作会影响所有依赖HTTP的服务,操作前确保业务允许)。
最后验证
完成上述操作后,用浏览器无痕模式访问站点(避免缓存干扰),或用curl命令测试:
curl -v http://你的站点域名
查看响应头是否存在Location: https://...的重定向,以此判断是服务器端还是客户端问题。
内容的提问来源于stack exchange,提问作者user3068888




