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

如何在IIS中配置重写规则隐藏URL中的文件名?

IIS重写规则修正方案

你的规则存在几个关键问题,导致无法实现需求,以下是修正后的规则及问题说明:

原规则的问题

  1. 条件逻辑错误:当前条件设置negate="false",意味着只有当请求是存在的文件或目录时才触发规则,但我们需要的是针对根目录后的文件名(非目录)进行处理,逻辑完全相反。
  2. Action路径错误:原规则中action的url写成了url="/",这会导致重写路径无效,正确格式应为直接指定目标路径"/"。
  3. 匹配范围过宽:match url="(.*)"会匹配包括根目录在内的所有路径,容易引发循环重写。

正确的重写规则(内部跳转,地址栏不变)

如果需要保持地址栏显示原URL(如login.html),但实际内部跳转到根目录,使用以下规则:

<rule name="HideFileName" stopProcessing="true">
    <!-- 匹配根目录后非空的任意路径 -->
    <match url="^(.+)$" />
    <conditions logicalGrouping="MatchAll">
        <!-- 排除请求为目录的情况 -->
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <!-- 可选:仅针对存在的文件,取消注释即可 -->
        <!-- <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="false" /> -->
    </conditions>
    <!-- 重写到网站根目录 -->
    <action type="Rewrite" url="/" />
</rule>

正确的重定向规则(地址栏改为根目录)

如果需要地址栏直接显示根目录(如http://example.com/),使用重定向规则:

<rule name="RedirectToRoot" stopProcessing="true">
    <match url="^(.+)$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <!-- 可选:仅针对存在的文件,取消注释即可 -->
        <!-- <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="false" /> -->
    </conditions>
    <!-- 永久重定向到根目录,可改为Temporary临时重定向 -->
    <action type="Redirect" url="/" redirectType="Permanent" />
</rule>

规则说明

  • match url="^(.+)$":仅匹配根目录后包含至少一个字符的路径,避免匹配根目录本身,防止循环重写。
  • IsDirectory negate="true":排除请求为目录的情况(如http://example.com/test/这类路径不会触发规则)。
  • stopProcessing="true":触发此规则后停止处理后续规则,避免规则冲突。
  • 若仅需处理存在的文件,取消IsFile条件的注释即可。

内容的提问来源于stack exchange,提问作者José Marcelino Menezes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:05:21