vue router 404处理本质是末尾通配路由匹配未命中路径,vue2用path: '',vue3用path: '/:pathmatch(.)*',需配notfound组件并配置服务端fallback返回index.html。

Vue Router 处理 404 的本质,是用一条“兜底路由”捕获所有未被其他规则匹配的路径,并渲染自定义页面。它不是拦截错误,而是路由匹配流程的自然终点。
通配路由必须放在 routes 数组末尾
Vue Router 按顺序逐条匹配,一旦命中就停止查找。如果把通配路由写在前面,它会提前吞掉所有请求,导致 /home、/user 等正常页面无法访问。
- ✅ 正确写法:把它作为 routes 数组的最后一项
- ❌ 错误示例:
{ path: '*' }放在{ path: '/user/:id' }前面 - 即使有带参数的动态路由(如
/post/:slug),只要没被前面的规则覆盖,最终都会落到这个兜底项
选对通配符写法:Vue2 vs Vue3
不同版本对通配语法支持不同,写错会导致控制台报错或 404 不触发。
-
Vue Router 3(Vue2):直接用
path: '*',简洁可靠 -
Vue Router 4(Vue3):推荐
path: '/:pathMatch(.*)*',语义清晰,支持嵌套路由深度匹配 - 两种写法都建议加上
name: 'NotFound',方便编程式跳转(如router.push({ name: 'NotFound' }))
创建并注册 NotFound 组件
新建 src/views/NotFound.vue,内容可精简实用:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
404 ?
页面去火星了:
<routerlink to="/">回首页</routerlink><br>
<script setup lang="ts"><br> import { useRoute } from 'vue-router'<br> const route = useRoute()<br> </script>
然后在路由配置中引入:
{path: '/:pathMatch(.*)*',
name: 'NotFound',
component: () => import('@/views/NotFound.vue')
}
别忘了服务端配合 fallback
开发时能跳转,但刷新页面出现真实 404?问题大概率不在前端代码,而在部署环境。
-
History 模式下:服务器必须把所有前端路由请求返回
index.html,否则 Nginx/Apache 会真实返回 HTTP 404 - Nginx 示例配置:
try_files $uri $uri/ /index.html; - Netlify:
[[redirects]] from = "/*" to = "/index.html" status = 200 - 开发阶段可用
devServer.historyApiFallback: true临时解决
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









