404是服务器明确返回“请求路径未找到”的http状态码,仅发生在http请求中,非本地file://访问;需用localhost服务运行、network面板查真实请求路径、确保大小写/编码/服务器配置正确,并验证404.html自身可正常返回200状态。

404不是页面“坏了”,而是服务器明确告诉你“这个路径我压根没找到”——它可能真不存在,也可能存在但被路径、配置或权限挡住了。
确认你真在走 HTTP 请求,而不是 file://
双击打开 HTML 文件,地址栏显示 file:///Users/xxx/index.html?那根本不会触发 404。浏览器只是读本地文件,不经过任何服务器逻辑。所有 404 都只发生在 HTTP 请求中。
- 必须用
http://localhost:8000/index.html这类地址访问才有效 - Python 用户:终端进项目目录,运行
python -m http.server 8000 - Node.js 用户:装
serve后运行npx serve -s(默认端口 5000) - 别用 VS Code Live Server 插件后还手动拖 HTML 到浏览器——插件已启服务,就该用它给的链接
用 Network 面板看真实请求路径
按 F12 → Network → 刷新 → 找标红的 404 请求项,点开看它的 Request URL。这才是服务器实际收到的地址,也是你要对齐的目标。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 如果 URL 是
http://localhost/css/style.css,但文件实际在assets/css/style.css,那就改 HTML 中的<link href="assets/css/style.css"> - URL 含中文或
ö会被自动编码成%C3%B6,但文件系统若存的是未编码名,就会 404;静态资源建议全用 ASCII 命名 - Linux/macOS 区分大小写:
IMG.JPG≠img.jpg;Windows 下不报错,线上必 404
Nginx/Apache 配了 404.html 却返回 200?
只放一个 404.html 在根目录,不配服务器,99% 的情况返回的是 200 状态码——搜索引擎当它是正常页,用户刷新也得不到重试提示。
- Nginx 正确写法:
error_page 404 /404.html;+location = /404.html { internal; };漏掉internal,外部可直连/404.html,状态码就变成 200 - Apache 用
ErrorDocument 404 /404.html,放在.htaccess或虚拟主机配置里,确保mod_alias已启用 - 配完务必用
curl -I http://localhost/nonexistent看响应头,确认是HTTP/1.1 404 Not Found,不是200 OK
GitHub Pages/Netlify/Vercel 上 404 页面不生效?
它们不跑完整 Web 服务器,自定义 404 必须严格按平台约定来,否则永远 404。
- GitHub Pages:文件必须叫
404.html,且放在仓库根目录;不能放/docs/404.html或/error/404.html - Netlify:支持
_redirects文件或netlify.toml配置,但404.html仍需放在根目录 - Vercel:默认识别根目录下的
404.html,但若用了rewrites或redirects,要确认没覆盖掉 404 路由
最容易被忽略的一点:404 页面本身必须能被直接访问(比如 http://localhost/404.html 返回 200),否则整个 fallback 机制就断了。很多团队花时间调路径和样式,却忘了先验证这个基础前提。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










