Vue Router 的通配符路由无法捕获已匹配动态路径(如 /movie/:id)的非法参数,因其仍满足路由规则;真正有效的 404 处理需结合参数校验、服务端响应拦截与导航守卫协同实现。
vue router 的通配符路由无法捕获已匹配动态路径(如 `/movie/:id`)的非法参数,因其仍满足路由规则;真正有效的 404 处理需结合参数校验、服务端响应拦截与导航守卫协同实现。
在 Vue 3 单页应用中,/:pathMatch(.*)* 通配符路由虽能兜底未声明路径(如 /xyz),但对已定义的动态路由(如 /movie/:id)完全失效——只要 URL 形式符合 /movie/xxx,无论 xxx 是否为合法 ID,Router 都会优先匹配该路由记录,根本不会进入 404 分支。这是设计使然,而非配置错误。
✅ 正确的 404 处理应分三层落地
1. 路由层:强化参数约束(可选但推荐)
通过正则限制 :id 必须为数字,避免无效参数进入组件:
// router/index.ts
{
path: '/movie/:id(\d+)',
name: 'movie_details',
component: MovieDetailsView,
// 若访问 /movie/abc → 直接 404(Router 层拦截)
}
⚠️ 注意:此方式仅适用于 ID 严格为纯数字的场景;若 TMDB ID 支持字母(如 tt1234567),则需退回到业务层判断。

