IE11下HTTP转HTTPS重定向URL路径异常问题求助
IE11下IIS HTTPS重定向URL路径错误的问题排查与修复
问题描述
我已经为网站www.jkp-ads.com启用了HTTPS,部署在IIS服务器上(版本未知)。大部分功能正常,但在IE11中输入网址www.jkp-ads.com/reftreeanalyser.asp时,会被错误重定向到https://www.jkp-ads.comreftreeanalyser.asp/(注意.com后的斜杠消失,反而移到了URL末尾),最终导致「无法访问此页面」的错误。当前的web.config重定向配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> </conditions> <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
问题原因
这个问题的核心在于IE11对IIS URL重写模块的URL拼接逻辑存在兼容性bug:
- 当前规则用
{HTTP_HOST}/{R:1}手动拼接HTTPS地址,其中{R:1}是捕获的URL路径部分(即reftreeanalyser.asp)。 - 现代浏览器能正常解析这种拼接,但IE11的URL解析逻辑特殊,会错误省略
{HTTP_HOST}和{R:1}之间的斜杠,导致路径直接粘在域名末尾,形成无效URL。 - 虽然访问根域名时
{R:1}为空,拼接结果https://www.jkp-ads.com/是正常的,但带路径的请求刚好触发了IE11的这个解析漏洞。
修复方案
最稳妥的解决方式是放弃手动拼接路径,直接使用{REQUEST_URI}变量——它包含了完整的请求路径(自带开头的斜杠),能彻底避免拼接错误。修改后的web.config规则如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> </conditions> <!-- 用{REQUEST_URI}替代手动拼接的/{R:1},确保路径完整性 --> <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}{REQUEST_URI}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
额外验证建议
如果修改后仍有异常,可以尝试:
- 若能确认服务器版本,升级IIS URL重写模块到最新版,旧版本可能存在更多IE兼容性问题。
- 无需额外添加路径判断条件,因为
{REQUEST_URI}在访问根域名时会自动返回/,不会出现拼接错误。
内容的提问来源于stack exchange,提问作者jkpieterse
相关产品推荐
相关产品推荐

