404错误表明请求已进入IIS但资源未找到,问题必在IIS配置、文件路径或权限;需逐一核验绑定信息、物理路径、默认文档、MIME类型、请求筛选、文件属性、应用程序池状态及IIS_IUSRS权限。

直接打开 file:/// 路径的 HTML 文件不会触发 IIS,也不会报 404;只要看到 404,说明请求已进入 IIS 管道,但服务器找不到对应资源——问题一定出在 IIS 配置、文件位置或权限上,不是浏览器或本地路径问题。
确认物理路径和站点绑定是否一致
IIS 不会自动猜你把文件放哪了。它只从「物理路径」配置里找,和 URL 地址无关。
- 打开 IIS 管理器 → 选中你的网站 → 右键「编辑绑定」,确认协议(HTTP/HTTPS)、IP、端口、主机名与你访问时完全一致(比如用
http://localhost:8080访问,绑定就必须含:8080) - 右键网站 → 「基本设置」→ 检查「物理路径」是否指向你 HTML 文件实际所在的文件夹(例如
C:\inetpub\wwwroot\myapp),而不是桌面或文档目录 - 进该物理路径文件夹,手动确认
index.html或你请求的文件(如about.html)真实存在,且扩展名是.html,不是.html.txt
检查默认文档和静态文件支持
IIS 默认只对特定扩展名提供服务,且默认只尝试加载几个文件名(如 index.html)。如果没配好,http://localhost/ 就会 404,哪怕 index.html 就在根目录。
- 在 IIS 管理器中双击「默认文档」→ 确保
index.html在列表中,且位置靠前;若没有,点击「添加」填入index.html - 双击「MIME 类型」→ 查找是否有
.html条目,MIME 类型应为text/html;如果没有,点击「添加」,扩展名填.html,类型填text/html - 若你访问的是
http://localhost/test.html这类明确路径,跳过默认文档检查,但 MIME 类型仍必须存在
排查请求筛选和隐藏属性拦截
IIS 默认拒绝提供 Windows 隐藏属性(hidden)的文件,也默认屏蔽某些扩展名(如 .ini、.config),但 .html 一般不受限——除非你动过配置。
立即学习“前端免费学习笔记(深入)”;
- 右键目标 HTML 文件 → 「属性」→ 确认「隐藏」复选框未勾选;若已勾选,清除后点「确定」
- 在 IIS 管理器中双击「请求筛选」→ 切换到「文件扩展名」选项卡 → 查看
.html是否被标记为「已阻止」;如果是,选中它 → 右键「允许」 - 检查
web.config是否有自定义拦截规则,例如:<requestFiltering> <fileExtensions> <add fileExtension=".html" allowed="false" /> </fileExtensions> </requestFiltering>若有,删掉或改成allowed="true"
验证应用程序池和权限是否就绪
即使只是纯 HTML,IIS 仍需通过应用程序池进程读取文件。权限不对或池挂了,照样 404。
- 确认应用程序池「状态」为「已启动」;右键 → 「启动」(如果灰色,说明依赖服务异常,先查 Windows Event Log)
- 应用程序池的「.NET CLR 版本」必须设为「无托管代码」——HTML 是静态内容,不走 .NET 管道,选 v4.0 或其他版本反而可能干扰
- 确保
IIS_IUSRS组对物理路径文件夹有「读取」和「列出文件夹内容」权限(右键文件夹 → 「属性」→ 「安全」→ 编辑 → 添加IIS_IUSRS→ 勾选对应权限)
最易被忽略的是:改完任何配置(尤其是 MIME 类型、默认文档、请求筛选)后,**不用重启 IIS,但必须刷新浏览器并强制清空缓存(Ctrl+F5)**;而改应用程序池设置或物理路径后,需重启对应的应用程序池,否则变更不生效。另外,IIS 日志(%SystemDrive%\inetpub\logs\LogFiles\)里的状态码子码(如 404.3 表示 MIME 问题,404.7 表示请求筛选)比主状态码更准,值得第一时间去看。



















