404错误本质是服务器返回“路径未找到”,非代码错误而是路径、部署或配置不匹配;本地双击触发的实为file://协议安全限制,需启本地服务器或改绝对路径。

404错误不是HTML写错了,而是服务器根本没找到那个文件——关键在路径、配置、状态码三处,缺一不可。
检查文件位置和访问路径是否严格匹配
本地双击打开 file:/// 路径不会触发真实404,那只是浏览器读文件;真404只发生在HTTP服务下。必须用 http://localhost/xxx.html 这类地址访问才有效。
- HTML文件必须放在Web服务器的根目录下(如Nginx的
/usr/share/nginx/html,Apache的htdocs) - URL中写的路径要和文件系统路径完全一致:比如文件在
/pages/about.html,就得访问http://localhost/pages/about.html - Windows注意隐藏扩展名:
about.html.txt看起来像about.html,但服务器找不到 - Linux/macOS区分大小写:
About.html≠about.html;Tomcat在Linux部署时也严格区分
Nginx/Apache必须显式配置error_page并验证响应头
只放一个 404.html 在根目录,不配服务器,99%的情况返回的是200状态码——搜索引擎当它是正常页,用户刷新也得不到重试提示。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- Nginx正确写法:
error_page 404 /404.html;+location = /404.html { internal; };漏掉internal,外部可直连/404.html,状态码就变成200 - Apache用
ErrorDocument 404 /404.html,放在.htaccess或虚拟主机配置里,确保mod_rewrite和mod_alias已启用 - 配完务必用
curl -I http://localhost/nonexistent看响应头,确认是HTTP/1.1 404 Not Found,不是200 OK
静态托管平台(GitHub Pages/Netlify/Vercel)有硬性命名与位置规则
它们不跑完整Web服务器,自定义404必须严格按平台约定来,否则永远404。
- GitHub Pages:文件必须叫
404.html,且放在仓库根目录;不能放/docs/404.html或/error/404.html - Netlify:支持
404.html或404.htm,也接受_redirects文件做重定向,但优先级低于真实404响应 - Vercel:默认识别
404.html,若项目含src/pages/404.tsx(Next.js),则以该路由为准,而非静态文件
iframe src或资源引用报404,大概率是相对路径解析错位
本地双击能开,上线就404,根本原因是服务器不按文件系统路径解析相对URL,而是按当前请求URL路径拼接。
- 比如浏览器地址是
http://localhost/myapp/overview.html,则src="report.html"会被解析为/myapp/report.html;但如果实际文件在/myapp/static/report.html,就必然404 - 改成绝对路径:
src="/myapp/static/report.html"(带开头斜杠,以站点根为基准) - 避免
../:src="../data/index.html"在Jetty、Stapler等环境下几乎必错 - 跨域或CDN资源优先用完整URL:
src="https://cdn.example.com/report.html"
最容易被忽略的是:你以为页面“加载出来了”,其实Network面板里CSS、JS、图片正在悄悄404——这些局部404比整页404更难察觉,也更伤SEO和用户体验。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










