服务器必须返回真实404状态码,否则404.html无效;需用curl -I或DevTools Network验证响应头是否为HTTP/1.1 404 Not Found;Apache配ErrorDocument、Nginx配error_page+internal、GitHub Pages仅认根目录小写404.html;HTML须内联样式、语义化结构、禁用JS依赖。

服务器必须返回真实 404 状态码,否则页面无效
光有 404.html 文件,90% 的情况不会触发真正的 404 行为。浏览器和搜索引擎只认 HTTP 响应头里的 HTTP/1.1 404 Not Found,不是看文件名或页面文字。
验证方式只有两种:curl -I http://localhost/nonexistent-path 看第一行;或在 DevTools Network 面板里检查目标请求的 Status 是否为 404。
- Apache:确认
.htaccess含ErrorDocument 404 /404.html,且mod_alias已启用 - Nginx:
error_page 404 /404.html;必须配location = /404.html { internal; },否则直连该路径会返回 200 - GitHub Pages:只认根目录下严格命名为
404.html(小写、无空格、无 BOM),且仅对顶层路径生效(/foo/bar触发,/docs/404.html不触发) - SPA 应用(React/Vue):
try_files $uri $uri/ /index.html;这类 fallback 会吞掉所有 404,必须排除/404.html路径
HTML 文件必须放对位置、命名严格、结构语义化
404.html 不是随便扔哪都行的普通页面。静态托管平台(GitHub Pages、Vercel、Netlify、Cloudflare Pages)全部只识别仓库根目录下的小写 404.html —— 写成 404.htm、pages/404.html、404.HTML 或带空格,全都不生效。
结构上不能靠 JS 渲染关键信息:<h1>404</h1> 必须是纯文本,不能是 SVG、图片或 document.write() 插入;<main></main> 或 role="main" 必须包裹主内容,保障屏幕阅读器可访问。
立即学习“前端免费学习笔记(深入)”;
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
-
<title></title>必须含 “404”,如<title>404 - 页面未找到</title> - 加
<meta name="robots" content="noindex">,防止被搜索引擎误收录 - 展示用户原访问路径:
<code><script>document.write(location.pathname)</script>,帮助排查拼写错误 - 导航链接统一用绝对路径,比如
<a href="/">← 返回首页</a>,别用history.back()—— 外链进来的 404 点它会跳空页
CSS 和资源必须内联,禁用外部依赖
404 页面常出现在资源路径本身出错时(比如 /assets/main.css 404),若页面再请求外部 CSS、JS 或图片,就会引发更多失败请求,导致白屏或只剩文字。
所有样式必须写在 <style></style> 标签里,控制在 1KB 以内;字体优先用系统默认栈;图片用 data URL 或绝对根路径(如 /img/404-icon.svg)。
- 禁用
<link rel="stylesheet">、<script src="..."></script>、<img src="relative/path.jpg" alt="HTML搭建404页面的思路与做法" > - 文字与背景对比度 ≥ 4.5:1,可用 webaim.org/contrastchecker 验证
- 避免使用 CDN 加载字体或框架(如 Bootstrap)—— 预览时看着好,上线后一断网就失效
- 动画可用 CSS @keyframes,但不要依赖 JS 控制时机;若加跳转逻辑,用
location.replace("/")并延时匹配动画时长
跳转逻辑必须降级可用,且不破坏 SEO
自动跳转不是必须的,但一旦加了,就得确保它不把页面变成 Google 定义的“软 404”。核心原则:用户得看清这是 404,且有手动操作入口。
常见失效原因包括缓存干扰、Service Worker 拦截、DOM 未就绪就执行跳转、服务端返回的是 200 而非 404。
- 跳转代码必须放在
DOMContentLoaded后,或直接放


















