Autor:
    Erstellung:2026-06-25Letzte Aktualisierung:2026-06-25

    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 ist intlayerProxy automatisch im Hauptplugin intlayer() enthalten und standardmäßig über routing.enableProxy: true aktiviert. Sie müssen es nur separat registrieren, wenn Sie eine Kontrolle auf niedrigerer Ebene benötigen oder es außerhalb des Standard-Setups von intlayer() verwenden.

    Verwendung

    Als Teil von intlayer() (empfohlen, v9+)

    Übergeben Sie proxy-Optionen an das Hauptplugin, anstatt intlayerProxy separat zu registrieren:

    ts
    // 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)

    ts
    // vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({  plugins: [intlayer()],});

    Optionen

    ts
    import type { IntlayerProxyPluginOptions } from "vite-intlayer";

    Alle Optionen sind optional und werden als einzelnes Objekt übergeben:

    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

    ts
    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).

    ts
    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)

    ts
    // 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

    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

    1. URL-Pfadpräfix (z. B. /de/aboutde).
    2. Cookie- / localStorage-Wert (intlayer-locale).
    3. Accept-Language-Header.
    4. defaultLocale aus 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, __manifest usw.).
    • 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/about auf intlayer.org wird an https://intlayer.zh/about weitergeleitet, wenn domains.zh = "intlayer.zh".
    • Eine Anfrage an intlayer.zh/about wird intern in /zh/about umgeschrieben, 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

    Veralteter Export Ersatz
    intlayerMiddleware intlayerProxy
    intLayerMiddlewarePlugin intlayerProxy