Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Versionshistorie
- "configOptions in ein einzelnes Option-Objekt zusammengeführt; Proxy in intlayer() gebündelt"v9.0.025.6.2026
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerProxy
intlayerProxy ist ein Vite-Plugin, das eine Sprach-Routing-Middleware für jede Umgebung registriert: Entwicklungs-Server, Vorschau-Server und Produktions-SSR (Nitro / TanStack Start).
Seit Intlayer v9 istintlayerProxyautomatisch im Hauptpluginintlayer()enthalten und standardmäßig überrouting.enableProxy: trueaktiviert. Sie müssen es nur separat registrieren, wenn Sie eine Kontrolle auf niedrigerer Ebene benötigen oder es außerhalb des Standard-Setups vonintlayer()verwenden.
Verwendung
Als Teil von intlayer() (empfohlen, v9+)
Übergeben Sie proxy-Optionen an das Hauptplugin, anstatt intlayerProxy separat zu registrieren:
Kopieren Sie den Code in die Zwischenablage
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Standalone (falls erforderlich)
Kopieren Sie den Code in die Zwischenablage
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Optionen
Kopieren Sie den Code in die Zwischenablage
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Alle Optionen sind optional und werden als einzelnes Objekt übergeben:
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Option | Typ | Beschreibung |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Prädikat, das Anfragen vom Sprach-Routing ausschließt. Gibt true zurück, um eine Anfrage zu überspringen (z. B. API-Routen, Health-Checks). |
configOptions | GetConfigurationOptions | Intlayer-Konfigurations-Overrides, die an getConfiguration() weitergeleitet werden. Verwenden Sie dies, wenn der Proxy eine bestimmte Konfigurationsdatei lesen oder Werte überschreiben soll. |
Beispiel
Kopieren Sie den Code in die Zwischenablage
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandler erstellt eine eigenständige, Framework-agnostische Node.js-Middleware (req, res, next), die die gesamte Sprach-Routing-Logik enthält. Sie ist nützlich in Umgebungen, in denen die Vite-Plugin-API nicht verfügbar ist (z. B. ein reiner Node.js-Server oder ein benutzerdefiniertes Nitro-Modul).
Kopieren Sie den Code in die Zwischenablage
import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);Produktions-SSR (TanStack Start / Nitro über h3)
Kopieren Sie den Code in die Zwischenablage
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Routing-Verhalten
Die Middleware spiegelt die Routing-Logik der next-intlayer-Middleware wider und unterstützt alle Intlayer-Routing-Modi.
Routing-Modi
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Modus | URL im Browser sichtbar | Verhalten |
|---|---|---|
prefix | /de/about | Standard. Sprachpräfix in der URL. Die Standardsprache leitet auf die URL ohne Präfix um, es sei denn, prefix-all ist aktiv. |
prefix-all | /en/about, /de/about | Alle Sprachen — einschließlich der Standardsprache — sind immer präfigiert. |
no-prefix | /about | Keine Sprache in der URL. Die Sprache wird nur in Cookies gespeichert; URL-Rewrites erfolgen intern. |
search-params | /about?locale=de | Sprache wird als Query-Parameter übergeben. Leitet um, um den locale-Parameter hinzuzufügen/zu aktualisieren, wenn er fehlt oder veraltet ist. |
Erkennungspriorität
- URL-Pfadpräfix (z. B.
/de/about→de). - Cookie- / localStorage-Wert (
intlayer-locale). Accept-Language-Header.defaultLocaleaus der Konfiguration.
Automatischer Bypass
Die Middleware leitet diese Anfragen immer direkt und ohne Sprachbehandlung weiter:
- Anfragen, die dem
ignore-Prädikat entsprechen. /node_modules/**/@**– Vite-Interna (@vite/,@fs/,@id/usw.)./_**– Server-Interna (__vite_ping,__manifestusw.).- Anfragen, deren Pfad mit einer Dateiendung endet (statische Assets). Wenn ein Sprachpräfix im Pfad eines statischen Assets vorhanden ist (z. B.
/de/logo.png), wird es entfernt, damit die Datei korrekt ausgeliefert werden kann.
Domain-Routing
Wenn routing.domains in Ihrer Intlayer-Konfiguration konfiguriert ist, verarbeitet die Middleware das domänenübergreifende Sprach-Routing:
- Eine Anfrage für
/zh/aboutaufintlayer.orgwird anhttps://intlayer.zh/aboutweitergeleitet, wenndomains.zh = "intlayer.zh". - Eine Anfrage an
intlayer.zh/aboutwird intern in/zh/aboutumgeschrieben, sodass der Routing-Parameter[locale]befüllt wird.
Schutz vor Redirect-Schleifen
Die Middleware verfolgt die Anzahl der Weiterleitungen pro originalUrl → newUrl-Paar innerhalb eines gleitenden 2-Sekunden-Fensters. Mehr als 10 Weiterleitungen innerhalb dieses Fensters geben eine 500-Antwort mit einem beschreibenden Fehler zurück, anstatt ewig im Kreis zu leiten.
Nitro / Produktions-SSR (automatische Injektion, v9+)
Wenn intlayerProxy als Vite-Plugin verwendet wird, trägt es eine .nitro-Eigenschaft. Das Build-Plugin nitro/vite liest diese Eigenschaft und fügt sie in nitroConfig.modules ein, sodass intlayerNitroHandler automatisch als Nitro-Server-Middleware registriert wird — für das Produktions-SSR ist keine manuelle Konfiguration erforderlich.
Der Nitro-Handler verwendet das Web Fetch API-Ereignismodell von h3 v2 (nicht fromNodeMiddleware), sodass er mit allen Nitro-Presets kompatibel ist: Node, Bun, Deno, Edge-Laufzeiten.
Veraltete Aliase
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Veralteter Export | Ersatz |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |