Weiterleitungen
Weiterleitungen ermöglichen es Ihnen, eine eingehende Anfragepfadanfrage zu einem anderen Zielpfad umzuleiten.
Um Weiterleitungen zu verwenden, können Sie den Schlüssel redirects
in next.config.js
nutzen:
redirects
ist eine asynchrone Funktion, die ein Array erwartet, das Objekte mit den Eigenschaften source
, destination
und permanent
enthält:
source
ist das Muster des eingehenden Anfragepfads.destination
ist der Pfad, zu dem weitergeleitet werden soll.permanent
true
oderfalse
- beitrue
wird der 308-Statuscode verwendet, der Clients/Suchmaschinen anweist, die Weiterleitung dauerhaft zu cachen, beifalse
wird der 307-Statuscode verwendet, der temporär ist und nicht gecacht wird.
Warum verwendet Next.js 307 und 308? Traditionell wurde 302 für eine temporäre Weiterleitung und 301 für eine permanente Weiterleitung verwendet, aber viele Browser änderten die Anfragemethode der Weiterleitung zu
GET
, unabhängig von der ursprünglichen Methode. Wenn beispielsweise der Browser eine Anfrage anPOST /v1/users
stellte, die den Statuscode302
mit dem Standort/v2/users
zurückgab, könnte die anschließende AnfrageGET /v2/users
anstelle der erwartetenPOST /v2/users
sein. Next.js verwendet die Statuscode 307 für temporäre Weiterleitungen und 308 für permanente Weiterleitungen, um die verwendete Anfragemethode explizit beizubehalten.
basePath
:false
oderundefined
- wenn false, wird derbasePath
nicht beim Abgleich berücksichtigt, kann nur für externe Weiterleitungen verwendet werden.locale
:false
oderundefined
- ob der Gebietsschema-Präfix beim Abgleich nicht berücksichtigt werden soll.has
ist ein Array von has-Objekten mit den Eigenschaftentype
,key
undvalue
.missing
ist ein Array von missing-Objekten mit den Eigenschaftentype
,key
undvalue
.
Weiterleitungen werden vor dem Dateisystem geprüft, einschließlich Seiten und /public
-Dateien.
Bei Verwendung des Pages Routers werden Weiterleitungen nicht auf Client-Side-Routing (Link
, router.push
) angewendet, es sei denn, Middleware ist vorhanden und stimmt mit dem Pfad überein.
Wenn eine Weiterleitung angewendet wird, werden alle in der Anfrage bereitgestellten Abfragewerte an das Weiterleitungsziel weitergegeben. Betrachten Sie beispielsweise folgende Weiterleitungskonfiguration:
Wenn /old-blog/post-1?hello=world
angefordert wird, wird der Client zu /blog/post-1?hello=world
weitergeleitet.
Pfadabgleich
Pfadabgleiche sind erlaubt, zum Beispiel wird /old-blog/:slug
mit /old-blog/hello-world
übereinstimmen (keine verschachtelten Pfade):
Platzhalter-Pfadabgleich
Um einen Platzhalter-Pfad abzugleichen, können Sie *
nach einem Parameter verwenden, zum Beispiel wird /blog/:slug*
mit /blog/a/b/c/d/hello-world
übereinstimmen:
Regex-Pfadabgleich
Um einen Regex-Pfad abzugleichen, können Sie den Regex in Klammern nach einem Parameter einschließen, zum Beispiel wird /post/:slug(\\d{1,})
mit /post/123
übereinstimmen, aber nicht mit /post/abc
:
Die folgenden Zeichen (
, )
, {
, }
, :
, *
, +
, ?
werden für Regex-Pfadabgleiche verwendet, daher müssen sie beim Einsatz als Nicht-Sonderzeichen in der source
mit einem \\
davor maskiert werden:
Header-, Cookie- und Abfrageabgleich
Um eine Weiterleitung nur bei Übereinstimmung von Header-, Cookie- oder Abfragewerten weiterzuleiten, können die Felder has
und missing
verwendet werden. Sowohl die source
als auch alle has
-Elemente müssen übereinstimmen und alle missing
-Elemente dürfen nicht übereinstimmen, damit die Weiterleitung angewendet wird.
has
und missing
-Elemente können folgende Felder haben:
type
:String
- muss entwederheader
,cookie
,host
oderquery
sein.key
:String
- der Schlüssel des ausgewählten Typs, gegen den verglichen wird.value
:String
oderundefined
- der zu prüfende Wert, wenn undefined, passt jeder Wert. Ein regex-ähnlicher String kann verwendet werden, um einen bestimmten Teil des Werts zu erfassen, z.B. wenn der Wertfirst-(?<paramName>.*)
fürfirst-second
verwendet wird, kannsecond
im Ziel mit:paramName
verwendet werden.
Weiterleitungen mit basePath-Unterstützung
Bei Nutzung der basePath
-Unterstützung mit Weiterleitungen wird jede source
und destination
automatisch mit dem basePath
versehen, es sei denn, Sie fügen basePath: false
zur Weiterleitung hinzu:
Weiterleitungen mit i18n-Unterstützung
Bei der Nutzung der i18n
-Unterstützung mit Weiterleitungen werden jede source
und destination
automatisch mit einem Präfix versehen, um die konfigurierten locales
zu behandeln, es sei denn, Sie fügen locale: false
zur Weiterleitung hinzu. Wenn locale: false
verwendet wird, müssen Sie die source
und destination
mit einer Lokalisierung versehen, damit sie korrekt zugeordnet werden können.
In seltenen Fällen müssen Sie möglicherweise einen benutzerdefinierten Statuscode für ältere HTTP-Clients zuweisen, um die Weiterleitung ordnungsgemäß durchzuführen. In diesen Fällen können Sie die Eigenschaft statusCode
anstelle der Eigenschaft permanent
verwenden, aber nicht beide. Um die IE11-Kompatibilität zu gewährleisten, wird für den Statuscode 308 automatisch ein Refresh
-Header hinzugefügt.
Andere Weiterleitungen
- In API-Routen und Route-Handlern können Sie basierend auf der eingehenden Anfrage weiterleiten.
- In
getStaticProps
undgetServerSideProps
können Sie bestimmte Seiten zum Zeitpunkt der Anfrage weiterleiten.
Versionshistorie
Version | Änderungen |
---|---|
v13.3.0 | missing hinzugefügt. |
v10.2.0 | has hinzugefügt. |
v9.5.0 | redirects hinzugefügt. |