LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

网站报错经典ASP页面找不到包含文件,但文件确实存在

freeflydom
2026年7月1日 16:44 本文热度 305

:网站报错经典ASP页面找不到包含文件,但文件确实存在

File: /test.asp/

Description: 找不到包含文件 

ASP Description: 找不到包含文件“function/safe.asp”。

我自己测试访问页面是正常,什么原因导致的?

代码开头:

<!--#include file="function/safe.asp"--> 

🔍 真正的原因

​ #include 使用的是相对路径

asp
<!--#include file="function/safe.asp"-->

而日志里请求的物理文件路径是:
File: /test.asp/(末尾多了一个 斜杠

当你请求 /test.asp(不带斜杠)时,IIS 认为当前文件是站点根目录下的 test.asp,所以相对路径 function/safe.asp 解析为:
/function/safe.asp ✅ 可以找到。

但是当请求 /test.asp/(带斜杠)时,IIS 会把它当作一个目录来处理。这时“当前文件”的路径逻辑变得奇怪:它可能认为当前目录是 /test.asp/ 这个不存在的文件夹,那么相对路径 function/safe.asp 就会变成:
/test.asp/function/safe.asp ❌ 当然找不到。

所以你手动浏览器访问正常(默认不加斜杠),而攻击请求触发报错(加了斜杠)。


🛠️ 解决方案(按推荐顺序)

1️⃣ 立即在 IIS 层面禁止对 .asp 文件以斜杠结尾的请求

  • 打开 IIS 管理器 → 选择你的网站 → URL 重写(如果没有这个模块需要先安装)

  • 添加一条入站规则

    • 匹配 URL:(.*\.asp)/$

    • 条件:{REQUEST_FILENAME}.asp 结尾

    • 操作:重定向{R:1}(去掉末尾斜杠),状态码 301 或 404

或者更简单地:

  • 在网站 错误页 设置中,对 404 错误自定义处理,但不如上面精确。

2️⃣ 在代码中防御

在所有 #include 之前,增加一段逻辑:如果 URL 末尾带斜杠,直接中断或重定向

asp
<%
Dim rawUrl
rawUrl = Request.ServerVariables("URL")
If Right(rawUrl, 1) = "/" Then
    ' 去掉末尾斜杠并永久重定向
    Response.Status = "301 Moved Permanently"
    Response.AddHeader "Location", Left(rawUrl, Len(rawUrl)-1)
    Response.End
End If
%>

把这段代码放在第1行(<%response.expires=0%> 之后、包含文件之前)。这样带斜杠的请求会被纠正,后续包含文件就能正确找到。

3️⃣ 改用绝对路径包含

如果不想改 URL 行为,可以修改 #includevirtual 绝对路径:

asp
<!--#include virtual="/function/safe.asp"-->

这样无论当前文件被当成目录还是文件,virtual 总是从网站根目录开始找,不受末尾斜杠影响。
但要注意:这要求你的网站根目录下确实有 function/safe.asp,并且 IIS 启用了虚拟路径支持(默认启用)。这是最彻底的解决方法。


该文章在 2026/7/1 16:44:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-9  粤公网安备44030602007207号