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

为何IIS的URL Rewrite Maps未更改浏览器URL?如何配置实现跳转?

问题根因

  • 你当前配置的action type="Rewrite"属于服务器端内部重写,整个处理过程仅在IIS内部完成,浏览器不会收到任何跳转通知,因此地址栏不会发生变化。要触发浏览器地址栏更新,必须使用Redirect类型动作返回3xx跳转状态码。
  • 现有重写映射的逻辑与需求不匹配:当前配置的逻辑是「请求路径匹配map的key时,内部返回value对应路径的内容」,并没有实现旧地址跳转到友好URL的逻辑。

修正配置方案

你需要根据实际需求调整规则,如果你需要实现「用户访问原始foo.html时,地址栏自动变为友好URL,同时正常返回页面内容」,需要配置两条规则分别处理跳转和内部重写,参考配置如下:

<rule name="原始地址跳转到友好URL" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{TestRedirect:{REQUEST_URI}}" pattern="(.+)" />
    </conditions>
    <!-- redirectType设为Permanent为301永久跳转,对SEO友好;测试阶段可改为Temporary用302临时跳转 -->
    <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent" />
</rule>

<rule name="友好URL映射到实际文件" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{TestRewrite:{REQUEST_URI}}" pattern="(.+)" />
    </conditions>
    <action type="Rewrite" url="{C:1}" appendQueryString="false" />
</rule>

<rewriteMaps>
    <!-- 跳转映射:key为原始文件访问路径,value为对应的友好URL -->
    <rewriteMap name="TestRedirect" defaultValue="">
        <add key="/foo.html" value="/This-Is-A-Nice-Page-To-Remember" />
    </rewriteMap>
    <!-- 重写映射:key为友好URL,value为对应的实际静态文件路径 -->
    <rewriteMap name="TestRewrite" defaultValue="">
        <add key="/This-Is-A-Nice-Page-To-Remember" value="/foo.html" />
    </rewriteMap>
</rewriteMaps>

注意事项

  • 如果不需要兼容旧地址的跳转,仅需要用户访问友好URL时正常返回内容,仅保留第二条友好URL映射到实际文件的规则即可,直接对外分发友好URL。
  • 配置修改完成后,需要重启对应IIS站点或者回收应用池,确保配置生效。
  • 浏览器会缓存301永久跳转,测试期间如果配置调整后未生效,可以清除浏览器缓存或者用无痕模式测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:21:00