Menu

permanentRedirect

Die permanentRedirect-Funktion ermöglicht es Ihnen, den Benutzer auf eine andere URL weiterzuleiten. permanentRedirect kann in Server-Komponenten, Client-Komponenten, Route-Handlern und Server-Aktionen verwendet werden.

In einem Streaming-Kontext wird dies ein Meta-Tag einfügen, 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 notFound-Funktion verwenden.

Hinweis: Wenn Sie stattdessen eine 307 (Temporary) HTTP-Weiterleitung zurückgeben möchten, 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-Aktionen)Die Art der Weiterleitung.

Standardmäßig verwendet permanentRedirect push (Hinzufügen eines neuen Eintrags zum Browser-Verlaufsstapel) in Server-Aktionen und replace (Ersetzen der aktuellen URL im Browser-Verlaufsstapel) überall sonst. Sie können dieses Verhalten durch Angabe des type-Parameters überschreiben.

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 löst einen NEXT_REDIRECT-Fehler aus und beendet das Rendering des Routensegments, 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')
  }
 
  // ...
}

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