Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Scalono configOptions w jeden obiekt opcji; proxy jest wbudowane w intlayer()"v9.0.025.06.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimIf 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 to wtyczka Vite, która rejestruje oprogramowanie pośredniczące (middleware) do routingu języków dla każdego środowiska: serwera deweloperskiego, serwera podglądu i produkcyjnego SSR (Nitro / TanStack Start).
Od Intlayer v9intlayerProxyjest automatycznie dołączany do głównej wtyczkiintlayer()i domyślnie włączony poprzezrouting.enableProxy: true. Musisz go zarejestrować osobno tylko wtedy, gdy potrzebujesz kontroli na niższym poziomie lub używasz go poza standardową konfiguracjąintlayer().
Użycie
Jako część intlayer() (zalecane, v9+)
Przekaż opcje proxy do głównej wtyczki zamiast rejestrować intlayerProxy osobno:
Skopiuj kod do schowka
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Samodzielnie (w razie potrzeby)
Skopiuj kod do schowka
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Opcje
Skopiuj kod do schowka
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Wszystkie opcje są opcjonalne i przekazywane jako pojedynczy obiekt:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Opcja | Typ | Opis |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Predykat wykluczający żądania z routingu języków. Zwróć true, aby pominąć żądanie (np. ścieżki API, testy kondycji/health checki). |
configOptions | GetConfigurationOptions | Nadpisania konfiguracji Intlayer przekazywane do getConfiguration(). Użyj, gdy potrzebujesz, aby proxy czytało określony plik konfiguracyjny lub nadpisywało wartości. |
Przykład
Skopiuj kod do schowka
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandler tworzy samodzielne, niezależne od frameworka oprogramowanie pośredniczące Node.js (req, res, next), które zawiera całą logikę routingu języków. Jest przydatne w środowiskach, w których API wtyczek Vite jest niedostępne (np. czysty serwer Node.js lub niestandardowy moduł Nitro).
Skopiuj kod do schowka
import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);Produkcyjny SSR (TanStack Start / Nitro przez h3)
Skopiuj kod do schowka
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Zachowanie routingu
Oprogramowanie pośredniczące odzwierciedla logikę routingu z middleware next-intlayer i obsługuje wszystkie tryby routingu Intlayer.
Tryby routingu
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Tryb | Widoczność URL w przeglądarce | Zachowanie |
|---|---|---|
prefix | /pl/about | Domyślny. Prefiks języka w adresie URL. Domyślny język przekierowuje do adresu URL bez prefiksu, chyba że włączono prefix-all. |
prefix-all | /en/about, /pl/about | Wszystkie języki — w tym domyślny — są zawsze poprzedzone prefiksem. |
no-prefix | /about | Brak języka w adresie URL. Język jest przechowywany wyłącznie w plikach cookie; przepisywanie URL odbywa się wewnętrznie. |
search-params | /about?locale=pl | Język przekazywany jako parametr zapytania (query parameter). Przekierowuje w celu dodania/aktualizacji parametru locale, jeśli go brakuje lub jest przestarzały. |
Priorytet wykrywania
- Prefiks ścieżki URL (np.
/pl/about→pl). - Wartość pliku cookie / localStorage (
intlayer-locale). - Nagłówek
Accept-Language. defaultLocalez konfiguracji.
Automatyczne pomijanie (bypass)
Oprogramowanie pośredniczące zawsze przepuszcza te żądania bezpośrednio, bez obsługi języka:
- Żądania pasujące do predykatu
ignore. /node_modules/**/@**– wewnętrzne zasoby Vite (@vite/,@fs/,@id/itp.)./_**– wewnętrzne zasoby serwera (__vite_ping,__manifestitp.).- Żądania, których ścieżka kończy się rozszerzeniem pliku (zasoby statyczne). Jeśli w ścieżce zasobu statycznego obecny jest prefiks języka (np.
/pl/logo.png), zostaje on usunięty, aby plik mógł być serwowany poprawnie.
Routing domenowy
Gdy w konfiguracji Intlayer skonfigurowano routing.domains, oprogramowanie pośredniczące obsługuje routing językowy między różnymi domenami:
- Żądanie dla
/zh/aboutw domenieintlayer.orgjest przekierowywane nahttps://intlayer.zh/about, gdydomains.zh = "intlayer.zh". - Żądanie do
intlayer.zh/aboutjest wewnętrznie przepisywane na/zh/about, aby parametr trasy[locale]został uzupełniony.
Ochrona przed pętlą przekierowań
Oprogramowanie pośredniczące śledzi liczbę przekierowań dla pary originalUrl → newUrl w ruchomym oknie 2 sekund. Więcej niż 10 przekierowań w tym oknie zwraca odpowiedź 500 z opisowym błędem zamiast zapętlania się w nieskończoność.
Nitro / produkcyjny SSR (automatyczna iniekcja, v9+)
Gdy intlayerProxy jest używany jako wtyczka Vite, niesie ze sobą właściwość .nitro. Wtyczka budująca nitro/vite odczytuje tę właściwość i wstrzykuje ją do nitroConfig.modules, dzięki czemu intlayerNitroHandler rejestruje się jako serwerowe oprogramowanie pośredniczące Nitro automatycznie — dla produkcyjnego SSR nie jest wymagana żadna ręczna konfiguracja.
Handler Nitro korzysta z modelu zdarzeń Web Fetch API h3 v2 (nie fromNodeMiddleware), więc jest kompatybilny ze wszystkimi szablonami (presets) Nitro: Node, Bun, Deno, środowiskami edge.
Zdeprecjonowane aliasy
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zdeprecjonowany eksport | Zamiennik |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |