redirect
Die redirect
-Funktion ermöglicht es, Benutzer auf eine andere URL umzuleiten. redirect
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 Umleitung clientseitig auszulösen. Andernfalls wird eine 307 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 308 (Permanente) HTTP-Weiterleitung anstelle von 307 (Temporär) bevorzugen, können Sie die
permanentRedirect
-Funktion verwenden.
Parameter
Die redirect
-Funktion akzeptiert zwei Argumente:
redirect(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 redirect
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
redirect
gibt keinen Wert zurück.
Beispiel
Der Aufruf der redirect()
-Funktion wirft einen NEXT_REDIRECT
-Fehler und beendet das Rendern des Routen-Segments, in dem er aufgetreten ist.
import { redirect } 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) {
redirect('/login')
}
// ...
}
Gut zu wissen:
redirect
erfordert nicht die Verwendung vonreturn redirect()
, da sie den TypeScript-Typnever
verwendet.
Version | Änderungen |
---|---|
v13.0.0 | redirect eingeführt. |