404.html必须放在网站根目录且与index.html同级;GitHub Pages、Netlify、Vercel仅识别此位置,放错路径如/pages/404.html即失效,还需服务器配置error_page或ErrorDocument并验证返回真实404状态码。

404.html 文件放对位置了吗?
自定义 404 页面必须放在 Web 服务器的根目录下,和 index.html 同级。GitHub Pages、Netlify、Vercel 都只认这个位置;放错到 /pages/404.html 或 /src/404.html 就完全无效。
常见错误包括:
- 构建后把
404.html放在了dist/assets/下(应直接在dist/根) - Vite 项目开了
base: "/myapp/",但 HTML 里没写<base href="/myapp/">,导致浏览器请求/404.html而不是/myapp/404.html - 本地用
npx serve -s测试,但它根本不支持自定义 404,所有请求都返回 200 +index.html—— 别信它
服务器配置是否真正启用 404.html?
文件放对只是第一步,Nginx、Apache 等必须显式配置才能让它生效。很多本地开发环境(如 XAMPP 默认 Apache)压根没开这项功能。
关键检查点:
立即学习“前端免费学习笔记(深入)”;
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- Nginx:确认
server块中有error_page 404 /404.html;,且额外配了location = /404.html { }允许直接访问该文件 - Apache:检查
.htaccess是否有ErrorDocument 404 /404.html,并确保该行没被注释,且AllowOverride All已启用 - GitHub Pages:只要
404.html在仓库根目录,自动生效;但若用了自定义域名,需确认 CNAME 未干扰路径解析
怎么验证 404 真的被返回了?
别只看页面内容是否显示“找不到”,要确认响应头里确实是 404 Not Found。很多“假 404”其实是服务端返回了 200 OK + 错误文案,这对 SEO 是灾难。
实操方法:
- 打开浏览器 DevTools → Network → 刷新一个明显不存在的路径(如
/nonexistent-123) - 找状态码为
404的请求项,点开 → Headers → 查看Response Headers中的Status行 - 如果看到
Status: 200 OK,说明是软 404,得改后端逻辑或静态服务配置 - 用
curl -I https://yoursite.com/nonexistent绕过浏览器缓存直查真实响应
为什么本地测试总失败?
因为绝大多数本地静态服务器(python -m http.server、Live Server、http-server)不实现 HTTP 错误页机制,它们只做文件映射:找不到就报错或返回空,不会发 404 状态码。
可靠测试方式只有两种:
- 部署到真实托管平台(GitHub Pages / Netlify / Vercel),用真实域名访问
- 用 Nginx 或 Apache 本地搭最小环境,按生产配置写好
error_page或ErrorDocument
尤其注意:VS Code Live Server 插件右下角弹出的链接是 http://127.0.0.1:5500/,但它返回的永远是 200,和线上行为完全脱节。


















