404.html必须严格置于根目录且全小写命名,平台才识别为错误页;需配置服务器返回真实404状态码;HTML中须含可见语义化“404”文字;跳转逻辑要兼顾可访问性与SEO。

直接放根目录、命名必须是 404.html(全小写、无空格、无扩展名变体),否则 GitHub Pages、Vercel 等平台根本不会接管——这不是样式问题,是服务器压根不认你这个文件。
文件名和位置必须严格满足平台规则
静态托管平台只识别根目录下的 404.html,大小写敏感,且不能嵌套在子目录里:
-
404.html✅ 正确(必须全小写) -
404.htm❌ 不识别 -
error-404.html❌ 不识别 -
pages/404.html❌ 不识别(必须在根目录) -
404.HTML❌ Windows 或 Git 可能自动转成大写,用git ls-files | grep 404检查真实提交名
Jekyll 用户还需在文件开头加 YAML front matter:---\npermalink: /404.html\npublished: false\n---,否则会被当成普通页面渲染。
确保服务器返回真实 HTTP 404 状态码
有 404.html 文件 ≠ 它真被当错误页用。关键看响应头是否为 404 Not Found,不是 200 OK 或 302 Found:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 浏览器开发者工具 → Network 标签 → 刷新一个不存在路径 → 查看状态码
- 若显示
200,说明路由 fallback(如 SPA 的try_files $uri $uri/ /index.html)吞掉了 404,需排除/404.html路径 - Apache:在
.htaccess中写ErrorDocument 404 /404.html(路径必须以/开头) - Nginx:在
server块中加error_page 404 /404.html;,并确认location = /404.html存在且未被 rewrite 覆盖
<h1></h1> 必须包含可见的 “404” 文字
不能靠图片、SVG、伪元素或 JS 插入“404”,搜索引擎和屏幕阅读器需要可解析的语义化文本:
- ✅ 正确:
<h1>404 Not Found</h1> - ❌ 错误:
<h1><img src="404.png" alt="404"></h1>(alt 不足以替代可见文字) - ❌ 错误:
<h1 id="title"></h1> <script>document.getElementById('title').textContent = '404';</script>(JS 执行前无内容)
同时建议用 <main></main> 包裹核心内容,<title></title> 也保持为 404 - 页面未找到 类表述,避免写成“正在跳转…”等误导性文案。
跳转逻辑要兼顾动画同步与 SEO 合规
如果想加“跳入首页”这类动画,得保证用户看清错误提示、有手动操作入口,且跳转不破坏可访问性:
- 动画结束后再跳转:CSS 动画设为
0.6s,JS 用setTimeout(() => { location.replace('/'); }, 600) - 用
location.replace('/')而非location.href = '/',防止用户点「返回」又回到白屏 - 跳转代码必须放在
DOMContentLoaded后,或直接写在


















