404错误本质是服务器未找到对应文件,应优先检查真实路径是否存在:linux用ls确认路径与权限,windows检查资源管理器中文件名及扩展名,tomcat需有web-inf目录,github pages仅认根目录小写404.html;再用curl验证状态码是否真为404,结合浏览器network面板确认实际请求url,最后排查大小写、空格、bom头及url编码问题。

直接在服务器文件系统里确认文件路径是否真实存在
404不是页面“打不开”,而是服务器压根没在指定位置找到那个文件——所以第一反应不该是改代码,而是去服务器上翻目录。很多问题其实一眼就能看出来:比如你访问 /blog/post.html,但实际文件在 /posts/post.html;或者 Windows 下双击保存时多了一个 .txt 后缀,文件名看着是 index.html,其实是 index.html.txt。
- Linux/macOS:用
ls -l /var/www/html/blog/post.html看文件是否存在、权限是否为可读(-rw-r--r--这类) - Windows(IIS 或本地测试):打开资源管理器,把地址栏路径粘贴进去,确认能直接打开该文件(注意开启“文件扩展名”显示)
- Tomcat 用户:必须检查文件是否在
webapps/yourapp/目录下,且yourapp文件夹内有WEB-INF/(哪怕为空)——没有这个目录,Tomcat 不认它是 Web 应用 - GitHub Pages:只认
404.html放在仓库根目录,且必须是小写、无空格、无额外后缀;404.htm或/pages/404.html都无效
用 curl 检查服务器是否真返回 404 状态码
很多人以为页面显示 “404 Not Found” 就是真的 404,其实可能只是个普通 HTML 页面被错误地返回了 200 状态码。搜索引擎和浏览器都依赖状态码做判断,返回 200 的“假 404”比真 404 更危险。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 运行
curl -I http://localhost/nonexistent-page.html,看响应头第一行是不是HTTP/1.1 404 Not Found - 如果返回
HTTP/1.1 200 OK,说明服务器配置漏了error_page(Nginx)或ErrorDocument(Apache),或用了前端路由 fallback 却没关掉真实文件检查 - 对静态托管平台(如 Vercel、Netlify),它们默认返回真 404;但自建 Nginx/Apache 必须显式配置,否则连
404.html文件放对了也白搭
浏览器 Network 面板里看“请求的 URL”到底是什么
你写的 href="about.html" 和浏览器真正发出的请求,经常不是一回事。JS 可能改过它,<base> 标签会重写所有相对路径,history.pushState 也可能让地址栏和实际请求脱节。
- F12 → Network → 刷新 → 找标红的 404 请求项 → 点开 → 看 Headers 里的
Request URL - 把这个 URL 完整复制出来,手动粘贴到新标签页访问 —— 如果还是 404,就去服务器上按这个路径找文件;如果能打开,说明原页面里有 JS 干扰或 CSP 拦截
- 特别注意末尾斜杠:
/admin和/admin/在多数服务器上是两个路径;前者可能被重写成/admin.html,后者才去找/admin/index.html - 状态码是
0?那基本和路径无关,是跨域、file://协议限制,或目标服务器主动断连(Connection: close)
大小写、空格、不可见字符这些细节最容易被忽略
Linux 服务器区分大小写,About.html ≠ about.html;Windows 主机虽不敏感,但 CDN、反向代理、Git 仓库同步过程都可能引入大小写不一致。而中文引号、全角冒号、BOM 头、不可见空格,这些在编辑器里几乎看不见,却足以让服务器拒绝服务。
- 把出问题的
href值全选 → 粘贴进纯文本编辑器(记事本、Notepad++ 的“显示所有字符”模式)→ 查看开头结尾有没有空格、中间有没有“替代"、有没有:替代: - 用
hexdump -C filename.html | head(Linux/macOS)检查文件是否有 BOM 头(EF BB BF 开头)——某些老旧服务器会因此解析失败 - URL 中含中文或特殊字符(如
ü、ö)时,浏览器自动编码为%C3%BC,但文件名若存的是未编码形式,必然 404;静态资源建议全部用 ASCII 命名 - Tomcat 在 Linux 上部署时,
Index.html和index.html是两个文件;开发时用 Windows 写好再传上去,很容易踩这个坑
ls 或资源管理器逐级打开,看你要的那个文件是不是真的在那里、叫什么名字、能不能被读取。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










