IIS 上 HTTP 404 未找到错误的故障排除 - 系统管理员指南


在 IIS 中启用详细错误,并获取确切的请求 URL,然后将其与站点绑定进行比较,以识别预期的站点或 vdir。 此第一步操作通常会揭示资源是否缺失、丢失,或位于基础设施中的不同位置,从而帮助您快速定位映射的所有者和正确路径。
识别 404 是否源于缺失的文件、配置错误的虚拟目录,或指向不存在位置的重定向。在 IIS 管理器中,检查 vdir 设置并验证磁盘上的物理路径,然后检查文件夹权限,以便工作进程可以在不同站点之间继续运行。如果您有多个站点,请列出它们的根文件夹及其服务的位置,以防止站点间混淆。
对于使用永久链接的 Web 应用程序,确保 URL 重写 规则或 处理程序映射 不会用友好页面掩盖真实的 404。更新 web.config 或 URL 重写 规则,然后从浏览器和服务器端日志测试互联网路径,以确认结果 URL 解析为实际文件或有效路由。
如果资源不存在,请创建占位符或将文件移动到预定位置,或配置适当的静态/ASP.NET 路由来提供资源。对于每个站点,保留 所有者 和预期内容位置的记录,以加速未来的识别。使用永久链接验证规范 URL 是否映射到现有资源,从而减少未来的丢失 404。
然后继续进行系统验证:检查面向互联网的 URL,确保 DNS 和主机头指向正确的站点,并将永久链接映射到真实文件路径。如果您仍然看到 404,请从 IIS 请求日志中跟踪请求,识别路径丢失的位置,并相应调整,记录更改以供所有者和团队使用。
分析 IIS 日志中的 404 模式和失败 URL

导出最新的 IIS 日志并过滤 404 响应。查找频繁的 URL 路径和首次出现的タイムスタンプ,以精确定位影响人们尝试访问您站点的问题。
404 中的模式揭示常见原因:缺失资源、配置错误的 vdir 条目,以及链接中的拼写错误。有些问题源于重定向或移动的内容,而其他问题则来自内部导航或外部引用。在笔记中记录 vdir 值以保持索引一致。构建顶级违规者的列表并跟踪随时间变化的计数,以区分偶尔遗漏和定期重复的问题。
使用引用者和用户代理字段来评估问题是否来自搜索、其他站点或直接查找。这有助于您优先解决根本原因并改善用户体验,减少摩擦。
导出 404 的表格友好视图,包括 URL 路径、计数、首次出现、引用者和笔记。此打印友好格式支持更新利益相关者并维护优化路径和索引的单一事实来源。
| URL 路径 | 状态 | 计数 | 首次出现 | 引用者 | 笔记 |
|---|---|---|---|---|---|
| /images/logo.png | 404 | 120 | 2025-11-01 08:23:11 | https://example.com/home | 磁盘上缺失文件 |
| /docs/guide.html | 404 | 68 | 2025-11-02 09:12:05 | https://example.com/manuals | 移动到 /docs/user-guide.html;更新链接 |
| /shop/vdir/index.html | 404 | 42 | 2025-11-03 11:01:22 | https://example.com/shop/ | VDir 配置错误;验证路径 |
解决和防止 404 的操作
对于缺失资源,恢复文件或创建 301 重定向到正确的 URL。对于配置错误的 vdir,在 IIS 管理器中验证 vdir 路径,检查 applicationHost.config,并确保存在物理路径。对于拼写错误,修复链接、更新关于页面的内容,并定期刷新内部搜索索引。
打印摘要报告并与支持团队分享。保持运行更改列表的更新,以跟踪什么有效,什么无效。对于多个频繁违规者,实现针对性重定向并移除死链接,以减少未来的错误。
定期审查您收集的模式,优化 404 的处理,并在应用更新到生产环境之前在暂存环境中测试重定向。此方法最小化错误,并帮助人们在导航您的站点时获得更顺畅的体验。
验证站点绑定、主机头和虚拟目录
立即审查并更正绑定:确保主机头、IP 和端口与客户端请求匹配,并且站点名称对应于使用的 URL。
绑定检查
打开 IIS 管理器,导航到 Sites > [您的站点] > Bindings。验证是否存在 http(如果使用 https 则包括)绑定的正确 IP 和端口。如果多个站点共享相同的 IP:端口,请添加匹配当前 URL 的主机名(主机头)值以正确路由请求。
使用确切的主机头测试请求:curl -I -H "Host: example.com" http://server/ 或使用浏览器。如果 404 持续存在,则绑定可能正确,但请求路径由另一个站点处理。
对于 https,验证证书匹配绑定中的主机名。检查主体和 SAN,并确保绑定在端口 443 上使用正确的证书。不匹配可能导致失败的请求,看起来像缺失资源。
检查 DNS 和代理层:确保传入请求携带预期的主机头;代理配置错误可能导致请求降落在错误的站点上,从而为有效路径产生 404。
虚拟目录和路径配置
验证站点下的虚拟目录别名是否存在;别名应作为 URL 段出现(例如 /files)。在右侧窗格中审查物理路径,并确认文件夹存在且可由应用池身份访问。
当目录应运行代码时,转换为应用程序。右键单击虚拟目录 > 转换为应用程序,选择正确的应用程序池,并确保池身份对物理路径具有读取权限。
如果您依赖目录级 URL,请检查默认文档;确保存在有效的默认文档(index.html、default.aspx 等)或在链接中提供明确的 文件路径。
审查可能重定向到不存在路径的 web.config 规则和 URL 重写。坏规则可能为否则有效的页面产生缺失资源 404;调整或移除冲突规则。
验证权限:授予 IIS_IUSRS 和应用池身份对物理路径的读取/执行权限,并验证 NTFS ACL 允许预期用户的访问。缺失权限通常导致看起来内容已消失的 404。
更改后再次测试:请求有问题的 URL 并确认 200 或适当重定向;如果重定向循环或资源仍缺失,请审查重写规则和应用池中的启动日志。
使用基本爬取来发现由绑定或虚拟目录引起的当前缺失页面问题。从 IIS 日志中 grep 404 条目以查找哪些请求失败,然后解决根本原因并再次测试到新的爬取。保存结果并与管理员和 LinkedIn 上的同事分享简洁摘要,以在您处理问题时保持大家一致。
验证文件路径、物理存在性和文件权限
在 IIS 管理器中验证站点的物理路径,并确保路径在磁盘上存在。在站点或虚拟目录的基本设置中,确认您指向的文件夹包含您预期的內容。如果路径已更改,请恢复原始位置或在管理单元中更正映射,以便请求地址正确的文件夹;否则 IIS 加载 nothing,您会看到 404。
确认文件实际存在于文件系统中,并且应用池身份有权遍历和读取它。使用文件资源管理器或 icacls 验证文件夹及其所有父文件夹的 ACL。授予应用池身份(例如 IIS APPPOOLYourAppPool)对内容根目录和其中的文件的读取和列出文件夹内容以及遍历权限。如果权限不正确,IIS 会指示访问拒绝,引擎即使文件存在也可能返回 404。适当调整 ACL 并重新测试。如果不确定,请临时分配已知用户的读取访问以确认文件加载。
检查您提供的扩展的 MIME 类型映射。打开站点的 MIME 类型并确保扩展有关联的 MIME 类型;缺失映射通常产生 404。如果需要,添加常见类型(.html、.css、.js、图像、字体)并验证发送正确的 content-type。还验证永久链接风格的 URL 从正确的文件夹加载;永久链接路由和物理路径之间的不匹配可能为静态和动态资产触发 404。
审查站点的请求授权设置。在管理单元中,导航到站点的授权规则并确保客户端身份允许读取请求的文件夹。如果拒绝规则阻止文件,引擎可能为某些路径返回 404;移除规则或缩小其范围有助于。确认如果您依赖公共访问则启用匿名身份验证,并检查域级或站点级设置如果多个站点共享相同的内容根目录。
启用并检查日志和跟踪。为 404 错误启用失败请求跟踪或审查 IIS 日志以识别命中次数和请求地址。查找确切的 URL、映射路径和来自引擎的文件路径;此识别数据有助于定位源头。使用该信息恢复正确路径、修复加载顺序,并防止令人沮丧的重复发生。在面向互联网的站点上,验证域配置文件和物理路径对齐;小的不匹配可能破坏多个站点的访问。更改后,回收应用池以应用新的映射和权限。如果您正在一致地处理 404,请首先解决根本原因,然后验证所有站点上的用户旅程。
审查 URL 重写规则和自定义错误配置
从 IIS 为每个站点导出当前的 URL 重写规则,并将其与已知良好的基线比较,以精确定位导致 404 结果的配置错误。这将揭示问题是否源于重写的 URL、缺失资源或不适当的自定义错误路径。
要检查的内容
在 web.config 或通过每个站点的 URL 重写模块定位规则。审查触发重写或重定向的模式和条件,并验证目标 URL 指向现有资源或在自定义错误中定义的适当 html 页面。确认 404 条目已定义,并且错误页面使用的路径存在于站点根目录下。检查共享单个应用池的站点之间路径映射的冲突。
审计评估顺序:第一个匹配规则停止进一步处理。查找可能在自定义错误处理程序运行之前捕获 404 的入站或出站规则,并确保在配置的位置有回退 404 页面。审查可能覆盖每个站点配置的全局或站点级设置。
如何应用修复

如果规则配置错误,请调整匹配模式、重写操作和目标。确保缺失资源不会被重写到返回非 404 响应的现有路径。更新自定义错误部分,以便 404 请求路由到真实的 html 文件,并验证文件已部署并具有正确的权限。更改后,回收应用池并从不同客户端环境测试以确认一致结果。使用服务器日志和失败请求跟踪 (FRT) 数据来识别确切的规则和最终响应页面。
使用针对性测试重现故障并监控响应
推荐: 使用针对性测试重现 404 并在共享仪表板中监控响应。在访问日志中捕获证据,并为每个模式分配所有者以加速修复。此方法帮助管理层看到当前影响并在站点范围内优先修复。
从站点的访问日志导出最后 200 个 404 条目。对于每个条目,记录时间、客户端 IP、主机名、请求 URL、引用者、用户代理、状态和响应大小。如果您观察到相关路径下缺失资产,这表明模式而非孤立案例。从这些信号构建简洁的测试列表以采取下一步。
测试路径变体:请求已知缺失 URL 时带和不带尾随斜杠;更改段的大小写;附加或剥离查询字符串;比较静态资产与动态路由的响应。包括 GET 和 HEAD 方法以确认服务器在任何意外重定向或重写发生之前返回 404。
当可用时使用失败请求跟踪 (FRT),并与相同タイムスタンプ的访问日志交叉检查。这些跟踪指示哪个规则或模块阻止了资源,或资源是否真正缺失。将结果绑定到仪表板指标:按路由、按主机和按帐户的 404 计数。此优秀的相关性加速调查并揭示当前热点。
对于重写或路由层后面的资源,检查相关的 web.config、URL 重写规则以及 IIS 可能通过重写模块尊重的任何 htaccess 式配置。如果 404 指示映射问题,请调整规则或文件路径,然后重新运行测试以在移动到生产之前确认修复。在 404 指向被阻止资源的情况下,验证阻止列表或访问限制并确保它们与预期的访问模式一致。
在仪表板中记录发现并与站点所有者和管理层分享摘要。如果需要,为跨团队可见性发布见解到 LinkedIn。该过程应可重复:保存测试输入、捕获响应,并附加来自访问日志的相关日志,以便帐户所有者或安全团队审查。
提高弹性的方法:构建一个小测试 harness,它迭代测试列表、记录状态代码并标记峰值。使用这些信号对缺失资产采取行动、更新内容清单,并仅在合理时按 IP 阻止噪声探测。始终保持当前测试套件与站点清单和 MIME 类型映射一致,以防止回归。
在任何更改之前,确保获得所有者批准和回滚计划。正在进行的监控仪表板应指示 404 率是否稳定、上升或返回基线。良好运行的测试制度加速事件响应并帮助团队提供更顺畅的用户体验。
Ready to leverage AI for your business?
Book a free strategy call — no strings attached.


