permanentRedirect

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

Bei Verwendung in einem Streaming-Kontext wird ein Meta-Tag eingefügt, um die Weiterleitung clientseitig auszulösen. Bei Verwendung in einer Server-Aktion wird eine 303 HTTP-Weiterleitungsantwort an den Aufrufer gesendet. Andernfalls wird eine 308 (Permanent) HTTP-Weiterleitungsantwort an den Aufrufer gesendet.

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

Gut zu wissen: Wenn Sie lieber eine 307 (Temporäre) HTTP-Weiterleitung anstelle von 308 (Permanent) zurückgeben möchten, können Sie stattdessen die Funktion redirect verwenden.

Parameter

Die Funktion permanentRedirect akzeptiert zwei Argumente:

permanentRedirect(path, type)
ParameterTypBeschreibung
pathstringDie URL, auf die umgeleitet 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 Parameter type angeben.

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

Rückgabewert

permanentRedirect gibt keinen Wert zurück.

Beispiel

Der Aufruf der Funktion permanentRedirect() löst einen NEXT_REDIRECT-Fehler aus und beendet das Rendering des Routen-Segments, in dem es 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 { id } = await params
  const team = await fetchTeam(id)
  if (!team) {
    permanentRedirect('/login')
  }

  // ...
}

Gut zu wissen: permanentRedirect erfordert nicht, dass Sie return permanentRedirect() verwenden, da es den TypeScript-Typ never verwendet.

On this page