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

ASP.NET URL Rewrite规则调整:HTTP转HTTPS时补全路径前缀

解决ASP.NET Rewrite中HTTP转HTTPS丢失路径前缀的问题

当然可以在重定向规则的URL中混合使用{HTTP_HOST}这类服务器变量和硬编码文本,这完全是支持的,而且刚好能解决你现在遇到的路径缺失问题。

你的核心问题是重定向后丢失了/ExitInterview这个路径前缀,只需要调整规则里的action节点的url属性,把这个前缀加进去,同时保留{HTTP_HOST}来适配不同环境的主机名,保留{R:1}来复用原请求的路径部分。

方案一:直接混合变量与硬编码文本

修改后的规则如下:

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/ExitInterview/{R:1}" redirectType="Permanent" />
</rule>

这样一来,不管是本地、staging还是生产环境,{HTTP_HOST}会自动获取当前请求的主机域名,硬编码的/ExitInterview会被添加到路径开头,{R:1}则会带上原请求里的后续路径(比如home/about),最终就能生成你期望的https://services.net/ExitInterview/home/about这类地址。

方案二:用服务器变量自动获取虚拟目录(更灵活)

如果ExitInterview是你的应用所在的虚拟目录名称,还可以用{APPL_MD_PATH}这个服务器变量来自动获取虚拟路径,这样连硬编码前缀都不需要,后续虚拟目录名称变化时也不用修改规则:

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{APPL_MD_PATH}/{R:1}" redirectType="Permanent" />
</rule>

{APPL_MD_PATH}会自动返回当前应用程序的虚拟目录路径(比如/ExitInterview),这样规则的适配性更强,完全不用关心不同环境的虚拟目录差异。

两种方案可以根据你的实际场景选择:如果/ExitInterview是固定的业务路径前缀,方案一更直接;如果是虚拟目录,方案二更灵活。

内容的提问来源于stack exchange,提问作者Steve Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:20:52