Redirección y Alias
Redirección
La redirección también se realiza en la configuración de routes
. Para redirigir de /home
a /
:
const routes = [{ path: '/home', redirect: '/' }]
La redirección también puede dirigirse a una ruta con nombre:
const routes = [{ path: '/home', redirect: { name: 'homepage' } }]
O incluso utilizar una función para la redirección dinámica:
const routes = [
{
// /search/screens -> /search?q=screens
path: '/search/:searchText',
redirect: to => {
// la función recibe la ruta destino como argumento
// devolvemos una ruta/ubicación de redirección aquí.
return { path: '/search', query: { q: to.params.searchText } }
},
},
{
path: '/search',
// ...
},
]
Observa que los Protectores de Navegación no se aplican en la ruta que redirige, sólo en su destino. Por ejemplo, en el ejemplo anterior, añadir un protector beforeEnter
a la ruta /home
no tendría ningún efecto.
Cuando se escribe un redirect
, se puede omitir la opción component
porque nunca se llega a él directamente, por lo que no hay ningún componente que renderizar. La única excepción son las rutas anidadas: si un registro de ruta tiene children
y una propiedad redirect
, también debería tener una propiedad component
.
Redireccionamiento relativo
También es posible redirigir a una ubicación relativa:
const routes = [
{
// siempre redirigirá /users/123/posts a /users/123/profile
path: '/users/:id/posts',
redirect: to => {
// la función recibe la ruta de destino como argumento
// una ubicación relativa no empieza por `/`.
// o { path: 'profile'}
return 'profile'
},
},
]
Alias
Una redirección significa que cuando el usuario visite /home
, la URL será reemplazada por /
, y luego emparejada como /
. Pero, ¿qué es un alias?
Un alias de /
como /home
significa que cuando el usuario visita /home
, la URL sigue siendo /home
, pero se buscará como si el usuario estuviera visitando /
.
Lo anterior puede expresarse en la configuración de rutas como:
const routes = [{ path: '/', component: Homepage, alias: '/home' }]
Un alias te da la libertad de asociar una estructura de interfaz de usuario a una URL arbitraria, en lugar de estar limitado por la estructura de anidamiento de la configuración. Haz que el alias empiece por /
para que la ruta sea absoluta en las rutas anidadas. Puedes incluso combinar ambos y proporcionar múltiples alias con un array:
const routes = [
{
path: '/users',
component: UsersLayout,
children: [
// esto mostrará la UserList para estas 3 URLs
// - /users
// - /users/list
// - /people
{ path: '', component: UserList, alias: ['/people', 'list'] },
],
},
]
Si tu ruta tiene parámetros, asegúrate de incluirlos en cualquier alias absoluto:
const routes = [
{
path: '/users/:id',
component: UsersByIdLayout,
children: [
// esto mostrará UserDetails para estas 3 URLs
// - /users/24
// - /users/24/profile
// - /24
{ path: 'profile', component: UserDetails, alias: ['/:id', ''] },
],
},
]
Nota sobre SEO: cuando uses alias, asegúrate de definir enlaces canónicos.