permanentRedirect

Die permanentRedirect-Funktion ermöglicht es, Benutzer auf eine andere URL umzuleiten. permanentRedirect kann in Server-Komponenten (Server Components), Client-Komponenten (Client Components), Route Handlern und Server Actions verwendet werden.

Bei Verwendung in einem Streaming-Kontext wird ein Meta-Tag eingefügt, um die Weiterleitung auf der Client-Seite auszulösen. Andernfalls wird eine 308 (Permanent) HTTP-Weiterleitungsantwort an den Aufrufer gesendet.

Falls eine Ressource nicht existiert, können Sie stattdessen die notFound-Funktion verwenden.

Gut zu wissen: Wenn Sie eine 307 (Temporary) HTTP-Weiterleitung anstelle von 308 (Permanent) bevorzugen, können Sie die redirect-Funktion verwenden.

Parameter

Die permanentRedirect-Funktion akzeptiert zwei Argumente:

permanentRedirect(path, type)
ParameterTypBeschreibung
pathstringDie URL, zu der weitergeleitet werden soll. Kann ein relativer oder absoluter Pfad sein.
type'replace' (Standard) oder 'push' (Standard in Server Actions)Der Typ der Weiterleitung.

Standardmäßig verwendet permanentRedirect push (fügt einen neuen Eintrag zum Browser-History-Stack hinzu) in Server Actions und replace (ersetzt die aktuelle URL im Browser-History-Stack) in allen anderen Fällen. Sie können dieses Verhalten überschreiben, indem Sie den type-Parameter angeben.

Der type-Parameter hat keine Auswirkung, wenn er in Server-Komponenten (Server Components) verwendet wird.

Rückgabewert

permanentRedirect gibt keinen Wert zurück.

Beispiel

Der Aufruf der permanentRedirect()-Funktion löst einen NEXT_REDIRECT-Fehler aus und beendet das Rendering des Route-Segments, in dem er ausgelöst wurde.

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')
  }

  // ...
}

Gut zu wissen: permanentRedirect erfordert nicht die Verwendung von return permanentRedirect(), da sie den TypeScript never-Typ verwendet.