permanentRedirect
La función permanentRedirect
permite redirigir al usuario a otra URL. Se puede utilizar en Componentes de Servidor, Componentes de Cliente, Manejadores de Ruta (Route Handlers) y Acciones de Servidor (Server Actions).
Cuando se usa en un contexto de transmisión (streaming), inserta una metaetiqueta para emitir la redirección en el lado del cliente. De lo contrario, devuelve una respuesta de redirección HTTP 308 (Permanente) al solicitante.
Si un recurso no existe, puede usar la función notFound
en su lugar.
Dato útil: Si prefiere devolver una redirección HTTP 307 (Temporal) en lugar de 308 (Permanente), puede usar la función
redirect
.
Parámetros
La función permanentRedirect
acepta dos argumentos:
permanentRedirect(path, type)
Parámetro | Tipo | Descripción |
---|---|---|
path | string | URL a la que redirigir. Puede ser una ruta relativa o absoluta. |
type | 'replace' (predeterminado) o 'push' (predeterminado en Server Actions) | Tipo de redirección a realizar. |
Por defecto, permanentRedirect
usará push
(añade una nueva entrada al historial del navegador) en Acciones de Servidor (Server Actions) y replace
(reemplaza la URL actual en el historial del navegador) en otros casos. Puede sobrescribir este comportamiento especificando el parámetro type
.
El parámetro type
no tiene efecto cuando se usa en Componentes de Servidor.
Valor de retorno
permanentRedirect
no devuelve ningún valor.
Ejemplo
Invocar la función permanentRedirect()
lanza un error NEXT_REDIRECT
y termina el renderizado del segmento de ruta donde se lanzó.
import { permanentRedirect } from 'next/navigation'
async function fetchTeam(id) {
const res = await fetch('https://...')
if (!res.ok) return undefined
return res.json()
}
export default async function Profile({ params }) {
const team = await fetchTeam(params.id)
if (!team) {
permanentRedirect('/login')
}
// ...
}
Dato útil:
permanentRedirect
no requiere que usereturn permanentRedirect()
ya que utiliza el tiponever
de TypeScript.