Autore:
    Creazione:2026-06-25Ultimo aggiornamento:2026-06-25

    intlayerProxy

    intlayerProxy è un plugin Vite che registra un middleware di routing locale per ogni ambiente: server di sviluppo, server di anteprima e SSR in produzione (Nitro / TanStack Start).

    A partire da Intlayer v9 intlayerProxy è incluso automaticamente all'interno del plugin principale intlayer() ed abilitato per impostazione predefinita tramite routing.enableProxy: true. È necessario registrarlo separatamente solo se si ha bisogno di un controllo di livello inferiore o se lo si utilizza al di fuori della configurazione standard di intlayer().

    Utilizzo

    Come parte di intlayer() (consigliato, v9+)

    Passa le opzioni proxy al plugin principale invece di registrare intlayerProxy separatamente:

    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 (quando necessario)

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

    Opzioni

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

    Tutte le opzioni sono facoltative e passate come un singolo oggetto:

    Opzione Tipo Descrizione
    ignore (req: IncomingMessage) => boolean Predicato che esclude le richieste dal routing locale. Restituisci true per saltare una richiesta (es. rotte API, controlli di integrità).
    configOptions GetConfigurationOptions Sostituzioni della configurazione Intlayer inoltrate a getConfiguration(). Utilizzare quando si ha bisogno che il proxy legga uno specifico file di configurazione o sovrascriva valori.

    Esempio

    ts
    intlayerProxy({  ignore: (req) => req.url?.startsWith("/api"),  configOptions: { configFile: "./config/intlayer.config.ts" },});

    createIntlayerProxyHandler

    createIntlayerProxyHandler crea un middleware Node.js (req, res, next) autonomo e indipendente dal framework che contiene tutta la logica di routing locale. È utile in ambienti in cui l'API del plugin Vite non è disponibile (es. un server Node.js semplice o un modulo Nitro personalizzato).

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

    SSR in produzione (TanStack Start / Nitro via h3)

    ts
    // server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware(  createIntlayerProxyHandler({    ignore: (req) => req.url?.startsWith("/api"),  }));

    Comportamento del routing

    Il middleware rispecchia la logica di routing del middleware next-intlayer e supporta tutte le modalità di routing di Intlayer.

    Modalità di routing

    Modalità URL visibile nel browser Comportamento
    prefix /it/about Predefinito. Prefisso della lingua nell'URL. La lingua predefinita reindirizza all'URL senza prefisso a meno che non sia attivo prefix-all.
    prefix-all /en/about, /it/about Tutte le lingue — compresa quella predefinita — hanno sempre il prefisso.
    no-prefix /about Nessuna lingua nell'URL. La lingua viene memorizzata solo nei cookie; le riscritture URL avvengono internamente.
    search-params /about?locale=it Lingua passata come parametro di query. Reindirizza per aggiungere/aggiornare il parametro locale quando mancante o obsoleto.

    Priorità di rilevamento

    1. Prefisso del percorso URL (es. /it/aboutit).
    2. Valore del cookie / localStorage (intlayer-locale).
    3. Intestazione Accept-Language.
    4. defaultLocale dalla configurazione.

    Bypass automatico

    Il middleware fa passare sempre queste richieste direttamente senza gestione della lingua:

    • Richieste corrispondenti al predicato ignore.
    • /node_modules/**
    • /@** – Componenti interni di Vite (@vite/, @fs/, @id/, ecc.).
    • /_** – Componenti interni del server (__vite_ping, __manifest, ecc.).
    • Richieste il cui percorso termina con un'estensione di file (risorse statiche). Se è presente un prefisso della lingua sul percorso di una risorsa statica (es. /it/logo.png), questo viene rimosso in modo che il file possa essere servito correttamente.

    Routing del dominio

    Quando routing.domains è configurato nella tua configurazione Intlayer, il middleware gestisce il routing di lingua interdominio:

    • Una richiesta per /zh/about su intlayer.org viene reindirizzata a https://intlayer.zh/about quando domains.zh = "intlayer.zh".
    • Una richiesta a intlayer.zh/about viene riscritta internamente in /zh/about in modo che il parametro di rotta [locale] venga popolato.

    Protezione dal ciclo di reindirizzamento

    Il middleware tiene traccia dei conteggi di reindirizzamento per coppia originalUrl → newUrl entro una finestra temporale mobile di 2 secondi. Più di 10 reindirizzamenti all'interno di quella finestra restituiscono una risposta 500 con un errore descrittivo anziché creare un loop infinito.

    Nitro / SSR in produzione (iniezione automatica, v9+)

    Quando intlayerProxy viene utilizzato come plugin Vite, include una proprietà .nitro. Il plugin di compilazione nitro/vite legge questa proprietà e la inserisce in nitroConfig.modules, quindi intlayerNitroHandler viene registrato automaticamente come middleware del server Nitro — nessuna configurazione manuale è necessaria per il SSR in produzione.

    Il gestore Nitro utilizza il modello di eventi della Web Fetch API di h3 v2 (non fromNodeMiddleware) quindi è compatibile con tutti i preset di Nitro: Node, Bun, Deno, runtime edge.

    Alias obsoleti

    Esportazione obsoleta Sostituzione
    intlayerMiddleware intlayerProxy
    intLayerMiddlewarePlugin intlayerProxy