全部捕获/ 404未找到路线

常规参数只会匹配网址片段之间的字符,并用分隔/。如果我们想匹配任何东西,我们可以使用自定义参数正则表达式,方法是在参数后面紧随括号内添加正则表达式:

const routes = [
  // will match everything and put it under `$route.params.pathMatch`
  { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
  // will match anything starting with `/user-` and put it under `$route.params.afterUser`
  { path: '/user-:afterUser(.*)', component: UserGeneric },
]

捕获所有路由 ( /* ) 时,现在必须使用带有自定义正则表达式的参数进行定义:/:catchAll(.*)

  { path: '/:catchAll(.*)*', name: 'NotFound', component: NotFound },

在这种特定情况下,我们在括号之间使用自定义正则表达式,并将pathMatch参数标记为可选的可重复的。这是为了让我们可以根据需要直接导航到路线,方法是将拆分path为一个数组:

this.$router.push({
  name: 'NotFound',
  params: { pathMatch: this.$route.path.split('/') },
})