必须返回404状态码,静态页需内联资源、禁用外部请求,交互要降级友好且可访问,禁用meta刷新,状态码与路径正确性优先于视觉效果。

必须显式返回 404 状态码,否则页面再炫酷也没用
浏览器和爬虫只认 Status: 404 Not Found 响应头,不看你页面里写了几个“404”大字。如果静态托管平台(如 GitHub Pages)只放了个 /404.html 但没配对路径或没触发状态码,它实际返回的是 200 OK —— 这会导致 SEO 把它当正常页面收录,用户刷新也收不到重试提示。
实操建议:
- GitHub Pages:文件必须放在根目录,命名为
404.html,且不能在子目录下; - Netlify:需在
_redirects文件中写/* /404.html 404,或在netlify.toml中配置[[redirects]] from = "/*" to = "/404.html" status = 404; - Express 后端:路由末尾必须调用
res.status(404).sendFile(path.join(__dirname, '404.html')),不能只用res.sendFile()。
所有资源必须内联,避免二次请求失败
404 页面本身可能由一个坏链接触发(比如 /blog/post-123),而这个 URL 的上下文里还可能引用了 /css/main.css 或 /js/app.js —— 如果这些资源也不存在,就会触发更多 404,拖慢渲染甚至白屏。
实操建议:
- CSS 必须用
内联,禁用; - 字体用系统栈:
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; - 图标/图片优先用内联 SVG,或 Data URI;禁用
这类外部请求;
- JavaScript 可保留(如搜索框聚焦、
history.back()),但不能依赖fetch、XMLHttpRequest或第三方 CDN。
交互逻辑要轻量、降级友好、可访问
用户可能在无网、低配设备、屏幕阅读器环境下打开 404 页面。所有交互必须不依赖网络、不阻塞渲染、支持键盘导航和 ARIA。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
实操建议:
- 用
document.referrer判断上一页是否同域,再动态渲染「回到上一页」按钮,但需加try/catch防跨域报错; - 搜索框用
并设autofocus,配合aria-label="站内搜索"; - 返回首页、博客、联系等按钮用纯
@#@#@#@#@#@#@#@#@#@0,不要onclick="location.href=..."; - 若加 Canvas 动画(如机器人跳舞),必须包裹在
if (canvas.getContext)检测里,且提供aria-live="polite"的文字 fallback。
别碰
这个标签会让页面返回 200 OK,然后跳转——既破坏状态语义,又对屏幕阅读器不友好,还会让后退键失效。
正确做法是让用户自己点按钮或按浏览器后退。如果真需要自动行为,只能用 JavaScript 控制 location.href,且必须加明确提示(如「2 秒后自动返回首页」+ 取消按钮)。
容易被忽略的一点:即使你做了 SVG 动画、Canvas 粒子、背景音乐,只要 HTTP 状态不是 404、样式不是内联、JS 有跨域 fetch,整个页面就等于没做。状态码和资源加载路径,永远比视觉效果优先级高。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










