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

IIS中URL重写后CSS及图片无法加载的问题求助

修复经典ASP IIS URL重写后静态资源加载问题

问题根源

你当前的Rewrite-to-http-verbs-handler规则用通配符.*匹配所有请求,导致CSS、图片这类静态资源请求也被强制转发到router2.asp处理。虽然浏览器显示状态码200,但实际返回的是ASP页面内容,而非静态文件本身。

修复方案

1. 修改重写规则,排除静态资源

更新web.config中的<rules>节点,添加条件排除已存在的静态文件请求,让IIS直接处理这些资源:

<rules>
    <rule name="Rewrite-to-http-verbs-handler">
        <match url=".*" />
        <!-- 排除已存在的静态文件和目录 -->
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <!-- 可选:如需精准排除特定后缀,可追加以下条件 -->
            <!-- <add input="{REQUEST_URI}" pattern="\.(css|js|png|jpg|jpeg|gif|ico|svg)$" negate="true" /> -->
        </conditions>
        <action type="Rewrite" url="/asp-app/routes/router2.asp" />
    </rule>
</rules>

2. 删除无效的出站规则

你配置的Rewrite css URLs出站规则针对响应内容类型,和当前静态资源被错误重写的问题无关,直接删除这部分代码:

<!-- 删除以下无效代码块 -->
<rule name="Rewrite css URLs" preCondition="IsCSS" stopProcessing="true">
    <match pattern="localhost/asp-app/data/styles" />
    <action type="Rewrite" value="localhost/asp-app/styles" />
</rule>
<preConditions>
    <preCondition name="IsCSS">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="text/css" />
    </preCondition>
</preConditions>

3. 确认IIS静态内容功能已启用

确保IIS开启了静态内容模块:

  • 打开服务器管理器 → 添加角色和功能 → 定位到Web服务器(IIS)→ Web服务器 → 常见HTTP功能 → 勾选"静态内容"
  • 重启IIS服务生效

原理说明

添加IsFile和IsDirectory的否定条件后,只有当请求路径不是实际存在的文件或目录时,才会触发重写规则转发到router2.asp。静态资源会被IIS直接返回,不再经过ASP处理,浏览器就能正确加载CSS和图片内容。

内容的提问来源于stack exchange,提问作者M.Y.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:45:14