URL Rewrite Module 2.1下HTTP转HTTPS失效求助(Angular+IIS10)
URL Rewrite 2.1升级后HTTP转HTTPS重定向失效的解决方案
很多用户都遇到过升级URL Rewrite Module到2.1版本后,原本正常的HTTP转HTTPS重定向规则失效的问题,尤其是在IIS 10环境下部署Angular应用的场景。针对你的情况,以下是几个经过验证的解决思路:
1. 修正{HTTPS}变量的匹配逻辑
URL Rewrite 2.1对{HTTPS}变量的返回值存在大小写兼容变化,部分场景下它会返回小写的off而非之前的大写OFF。你可以给匹配规则添加忽略大小写的配置:
<add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" />
2. 补充多条件判断提升兼容性
部分环境中,升级后的模块可能无法准确识别{HTTPS}变量,可搭配{SERVER_PORT_SECURE}变量做双重判断:
<conditions logicalGrouping="MatchAny"> <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> <add input="{SERVER_PORT_SECURE}" pattern="^0$" /> </conditions>
3. 排查Angular路由规则冲突
如果你的web.config中包含Angular SPA的路由重写规则,需要确保HTTPS重定向规则的优先级更高——将它放在所有路由规则的最前面,避免被其他规则提前拦截处理。
4. 验证模块状态与规则加载
- 打开IIS管理器,确认URL Rewrite 2.1模块已正确安装并启用
- 进入站点的「URL重写」界面,检查你的重定向规则是否被正常加载,必要时可以删除规则后重新创建或导入
修改后的完整web.config示例:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions applyToWebDAV="false"> <add fileExtension=".pdf" allowed="true" /> </fileExtensions> </requestFiltering> </security> <directoryBrowse enabled="true" /> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Credentials" value="true" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" /> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> <rewrite> <rules> <rule name="redirect" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAny"> <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> <add input="{SERVER_PORT_SECURE}" pattern="^0$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> <!-- 若有Angular SPA路由规则,放在此处 --> </rules> </rewrite> </system.webServer> </configuration>
内容的提问来源于stack exchange,提问作者Ghoul
相关产品推荐
相关产品推荐

