重定向 redirect 改变 url 地址栏并跳转到新路由,别名 alias 保持 url 不变而渲染目标组件;redirect 适用于路径迁移和默认入口,alias 用于多路径访问同一组件,二者不可共存于同一路由配置。

Vue Router 中的 redirect 和 alias 是两个功能明确、用途分明的机制,关键区别在于:重定向会改变 URL 地址栏,而别名不会——用户看到什么 URL,就显示什么 URL,但背后匹配的是另一个路由定义。
重定向 redirect:URL 变了,页面也换了
重定向用于主动把用户从一个路径“推”到另一个路径,适用于页面迁移、默认入口设置、参数标准化等场景。它有三种常用写法:
- 字符串路径跳转:{ path: '/login', redirect: '/auth/login' },访问 /login 时地址栏立刻变成 /auth/login
- 命名路由跳转:{ path: '/old', redirect: { name: 'dashboard' } },解耦路径变化,利于后期维护
- 函数式动态跳转:{ path: '/user/:id?', redirect: to => { if (to.params.id) return `/profile/${to.params.id}`; return '/guest'; } },支持基于 query、params、hash 做逻辑判断
注意:重定向源路由(如 /old)上定义的导航守卫(如 beforeEnter)不会执行;只有目标路由(如 { name: 'dashboard' })的守卫会被触发。原始 URL 的 query 和 hash 默认不继承,需手动拼入返回对象中。
别名 alias:URL 不变,内容照常渲染
别名让同一个组件能通过多个不同路径访问,适合 SEO 友好型多入口、URL 美化或兼容旧版路径但不希望暴露真实结构的场景。配置简单直接:
- 单个别名:{ path: '/home', component: Home, alias: '/index' },访问 /index 时地址栏保持 /index,渲染 Home 组件
- 多个别名:alias: ['/index', '/welcome', '/start'],三者都指向同一组件
- 相对别名:在嵌套路由中使用 alias: 'about',会被解析为父级路径 + about(例如 /user/about)
- 空字符串别名:alias: '',表示该子路由可被其父路径直接访问(如子路由 { path: 'settings', alias: '', component: Settings } 在父路由 /user 下,访问 /user 即可展示 Settings)
怎么选?看你要不要改地址栏
如果希望用户看到新地址(比如旧链接失效后引导至新版页面),用 redirect;如果希望保留当前 URL 形式但复用已有逻辑(比如让 /admin 和 /manage 都打开管理页),用 alias。两者不互斥,可共存于同一项目中,但不能混用在同一项配置里(即不能同时写 redirect 和 alias)。
实际开发中,常见组合是:根路径重定向到首页(/ → /home),再为首页配置别名(/home alias: '/index'),兼顾默认跳转与多入口支持。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










