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 Handlers und Server Actions verwendet werden.
Bei Verwendung in einem Streaming-Kontext wird ein Meta-Tag eingefügt, um die Umleitung clientseitig auszulösen. Bei Verwendung in einer Server-Aktion (Server Action) wird eine 303 HTTP-Weiterleitungsantwort an den Aufrufer gesendet. 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)
Parameter | Typ | Beschreibung |
---|---|---|
path | string | Die URL, zu der umgeleitet werden soll. Kann ein relativer oder absoluter Pfad sein. |
type | 'replace' (Standard) oder 'push' (Standard in Server Actions) | Der Typ der durchzuführenden Umleitung. |
Standardmäßig verwendet permanentRedirect
push
(fügt einen neuen Eintrag zum Browser-Verlauf hinzu) in Server Actions und replace
(ersetzt die aktuelle URL im Browser-Verlauf) 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 verwendet wird.
Rückgabewert
permanentRedirect
gibt keinen Wert zurück.
Beispiel
Der Aufruf der permanentRedirect()
-Funktion wirft einen NEXT_REDIRECT
-Fehler und beendet das Rendern des Routen-Segments, in dem er aufgetreten ist.
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 vonreturn permanentRedirect()
, da es den TypeScript-never
-Typ verwendet.