如何捕获所有未定义的路由?实现一个优雅的 404 Not Found 页面教程

舞夢輝影

舞夢輝影

2026-06-02

231人浏览

原创

404页面是服务器返回“资源未找到”状态码时展示的友好提示页,需明确告知用户页面不存在、保持http 404状态码、提供有效导航,并区分路由级与数据级404以精准响应。

如何捕获所有未定义的路由?实现一个优雅的 404 not found 页面教程

在 Web 应用中,捕获所有未定义的路由并返回一个友好的 404 页面,是提升用户体验和 SEO 的基本实践。关键不在于“兜底”,而在于明确告诉用户“资源不存在”,同时保持应用状态稳定、不崩溃、不跳转错误页面。

确保 404 路由放在路由配置末尾

大多数前端路由库(如 React Router、Vue Router、Express)都按顺序匹配路由。如果把通配路由(如 /\*\*\*)写在前面,它会提前拦截所有请求,导致其他路由失效。

  • React Router v6:使用 } />,且必须作为最后一个 Route
  • Vue Router:添加 { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },放在 routes 数组最后
  • Express:在所有 app.get() 之后,加 app.use((req, res) => res.status(404).render('404'))

服务端也要同步处理(避免 SPA 的 404 陷阱)

单页应用(SPA)依赖前端路由,但用户直接访问 https://site.com/abc 时,请求首先到达服务器。若 Nginx/Apache/Node.js 没有正确回退到 index.html,就会返回真正的 404 状态码(HTTP 404),搜索引擎可能误判为内容缺失。

灵活路由的PHP库
灵活路由的PHP库

灵活路由的PHP库

下载
  • Nginx:在 location 块中添加 try_files $uri $uri/ /index.html;
  • Vercel/Netlify:默认支持,无需额外配置
  • 自建 Express:在静态文件中间件后加 app.get('*', (req, res) => res.sendFile(path.join(__dirname, 'index.html'))),但注意——这仅适用于前端路由兜底,真正的 404 仍需由前端组件判断并渲染

让 404 页面真正“优雅”:不只是样式好看

一个高质量的 404 页面应兼顾功能、可访问性和语义化:

  • 返回标准 HTTP 状态码 404(服务端渲染或 SSR 场景下必须;纯 CSR 可通过 document.title = "404 Not Found" 和 meta 标签辅助)
  • 提供清晰文案:“抱歉,您访问的页面不存在”,避免技术术语或幽默梗(影响可信度)
  • 包含实用导航:首页链接、搜索框、最近浏览或分类入口(可选)
  • 确保键盘可访问:焦点能进入主按钮,跳过导航快捷键(skip link)可用
  • 轻量加载:不引入额外 JS/CSS,404 页面本身应快速渲染

进阶:区分“路由不存在”与“数据不存在”

不是所有 404 都该走兜底页。例如 /post/999 路由存在,但 ID=999 的文章已被删除——这是数据层 404,应由组件内请求失败触发,显示“文章已下线”,而非跳转全局 NotFound 页面。

  • 路由级 404:URL 完全不匹配任何 path,交由最外层路由处理器
  • 数据级 404:路由匹配成功,但 API 返回 404 或空数据,应在页面组件内处理并展示定制提示
  • 两者状态码都应为 404,但用户感知和交互路径不同

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

路由 nginx配置 not_found

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1111

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2283

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2154

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2344

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

336

5

Selenium WebDriver元素定位与页面操作教程
Selenium WebDriver元素定位与页面操作教程

本专题整理Selenium WebDriver元素定位、XPath、CSS Selector、等待机制、窗口切换、Frame处理、Alert弹窗、Cookie操作和文件上传等核心用法。

2026.08.05

3

26

Selenium Grid分布式测试与并行执行教程
Selenium Grid分布式测试与并行执行教程

本专题整理Selenium Grid架构、远程WebDriver、并行测试、Docker部署、Kubernetes动态Grid、浏览器矩阵和测试环境扩展方法,适合进阶自动化测试团队使用。

2026.08.05

1

18

Selenium常见报错排查与自动化测试稳定性
Selenium常见报错排查与自动化测试稳定性

本专题整理Selenium常见报错、驱动版本问题、元素找不到、点击失败、等待超时、浏览器闪退、脚本不稳定和测试用例维护方法。

2026.08.05

0

17

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

11

21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CodeIgniter框架入门视频教程
CodeIgniter框架入门视频教程

共0课时 | 0人学习

Symfony 官方文档
Symfony 官方文档

共0课时 | 0人学习