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ámetroTipoDescripción
pathstringURL 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ó.

app/team/[id]/page.js
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 use return permanentRedirect() ya que utiliza el tipo never de TypeScript.