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

IIS Web Server web.config重写URL暴露于地址栏的问题求助

解决IIS URL重写后地址栏显示newfolder的问题

URL重写本身是服务器内部处理逻辑,不会主动修改浏览器地址栏,你遇到的情况说明服务器实际返回了重定向响应(301/302),而非单纯的内部重写。最常见的原因是目标目录newfolder为物理存在的目录,触发了IIS的自动跳转规则。以下是仅用重写规则的解决方法:

核心修正思路

通过调整规则条件,避免触发IIS对物理文件/目录的自动跳转逻辑,确保所有重写操作仅在服务器内部完成。

修正后的配置

<rewrite>
  <rules>
    <rule name="New folder" enabled="true" stopProcessing="true">
      <match url="^(.*)$" />
      <conditions logicalGrouping="MatchAll">
        <!-- 排除已包含newfolder的请求,避免规则循环执行 -->
        <add input="{REQUEST_URI}" pattern="^/newfolder" negate="true" />
        <!-- 排除物理存在的文件请求 -->
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <!-- 排除物理存在的目录请求 -->
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/newfolder/{R:0}" appendQueryString="true" logRewrittenUrl="true" />
    </rule>
  </rules>
</rewrite>

关键说明

  • 新增的IsFile和IsDirectory条件,确保只有当请求路径既不是物理文件也不是物理目录时,才执行重写操作。这避免了IIS处理物理目录时自动返回重定向(比如不带斜杠的目录请求会被强制跳转到带斜杠的版本)。
  • 保留原有的排除newfolder的条件,防止规则陷入循环执行。

额外检查项

  1. 用浏览器开发者工具查看网络请求,确认没有301/302状态码的响应。
  2. 如果newfolder是物理目录,可在web.config中单独禁用该目录的自动跳转:
<location path="newfolder">
  <system.webServer>
    <directoryBrowse enabled="false" />
    <httpRedirect enabled="false" />
  </system.webServer>
</location>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:15:27