You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server2022下IIS10的HTTP转HTTPS重写规则失效问题

IIS 10(Windows Server 2022)HTTP转HTTPS重写规则不生效问题

更新时间:2024年6月6日

我在Windows Server 2022系统的IIS 10中,尝试用URL Rewrite模块配置HTTP转HTTPS的重写规则,但规则没有生效。

我的规则配置

规则定义在WebAppDemo应用的web.config文件中,路径为:inetpub/wwwroot/WebAppDemo/web.config
注:规则未实现HTTP到HTTPS的跳转,请继续阅读...

<system.webServer>
    <rewrite>
        <rules>
            <rule name="WebAppDemoHttpsRedirect" stopProcessing="true">
                <match url="/WebAppDemo(/.*)?$" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}:9443{REQUEST_URI}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

这个规则无法将HTTP请求重定向到HTTPS。我不确定哪里配置错了,已经回收了“Default Web Site”下WebAppDemo的应用池,是否必须重启“Default Web Site”才能让规则生效?我尽量不想这么做...

环境配置

Default Web Site 
    WebAppDemo
    绑定:
        http:80
    访问地址: http://my-host-name.myorg.com/WebAppDemo/Default.aspx           
    
New Web Site
    WebAppDemo
    绑定:
        https:9443(自定义端口)
        主机名: my-host-name.myorg.com
        端口:9443
        服务器名称标识(已勾选复选框)   
    访问地址: https://my-host-name.myorg.com:9443/WebAppDemo/Default.aspx
    
注意: 两个站点中的WebAppDemo指向同一物理目录 
    
测试操作:用Chrome浏览器访问 http://my-host-name.myorg.com/WebAppDemo/Default.aspx
结果:未重定向到HTTPS站点。

问题分析与修复方案

1. 匹配规则错误是核心问题

你的<match url>配置了/WebAppDemo(/.*)?$,但IIS中{URL}变量(也就是<match url>匹配的内容)不包含应用程序的虚拟路径前缀。当请求http://my-host-name.myorg.com/WebAppDemo/Default.aspx时,{URL}的值是/Default.aspx,而不是/WebAppDemo/Default.aspx,所以规则根本匹配不上,自然不会触发重定向。

修改匹配规则为:

<match url="(.*)" />

这个配置会匹配所有请求路径,确保只要是HTTP请求就会被捕获。

2. 重定向URL优化

当前重定向URL格式没问题,但建议加上redirectType="Permanent"返回301永久重定向,对SEO和浏览器缓存更友好:

<action type="Redirect" url="https://{HTTP_HOST}:9443{REQUEST_URI}" redirectType="Permanent" />

3. 规则生效验证与重启问题

回收应用池通常已经足够让web.config的修改生效,不需要重启站点。如果回收后仍不生效,可以尝试:

  • 检查URL Rewrite模块是否正确安装(在IIS管理器站点的功能视图中确认有URL Rewrite图标)
  • 查看IIS日志(默认路径inetpub/logs/LogFiles),确认请求是否命中规则
  • 清除浏览器缓存后用Ctrl+Shift+R强制刷新测试

4. 额外优化:避免循环重定向

由于两个站点共享同一物理目录,后续HTTPS站点的web.config也会加载这条规则,建议添加条件排除HTTPS端口,防止循环重定向:

<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTPS}" pattern="^OFF$" />
    <add input="{SERVER_PORT}" pattern="^9443$" negate="true" />
</conditions>

修复后的完整规则

<system.webServer>
    <rewrite>
        <rules>
            <rule name="WebAppDemoHttpsRedirect" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^OFF$" />
                    <add input="{SERVER_PORT}" pattern="^9443$" negate="true" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}:9443{REQUEST_URI}" redirectType="Permanent" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

内容的提问来源于stack exchange,提问作者Tech with Thiru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:51:19