Задайте вопрос и получите краткое содержание документа через любого ИИ-провайдера на этой странице
История версий
- "Параметр configOptions объединен в один объект настроек; прокси встроен в intlayer()"v9.0.025.06.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf 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 — это плагин Vite, который регистрирует промежуточное ПО (middleware) локализации роутинга для любой среды: dev-сервера, preview-сервера и продакшен SSR (Nitro / TanStack Start).
Начиная с Intlayer v9intlayerProxyавтоматически включается в основной плагинintlayer()и активирован по умолчанию с помощью настройкиrouting.enableProxy: true. Вам нужно регистрировать его отдельно только в том случае, если вам нужен низкоуровневый контроль или если вы используете его за пределами стандартной конфигурацииintlayer().
Использование
В составе intlayer() (рекомендуется, v9+)
Передайте параметры proxy в основной плагин вместо отдельной регистрации intlayerProxy:
Копировать код в буфер обмена
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Отдельно (при необходимости)
Копировать код в буфер обмена
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Параметры
Копировать код в буфер обмена
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Все параметры являются необязательными и передаются в виде единого объекта:
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Параметр | Тип | Описание |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Предикат, который исключает запросы из локализации роутинга. Верните true, чтобы пропустить запрос (например, для роутов API, health check-ов). |
configOptions | GetConfigurationOptions | Переопределения конфигурации Intlayer, передаваемые в getConfiguration(). Используйте, когда вам нужно, чтобы прокси читал конкретный конфигурационный файл или переопределял значения. |
Пример
Копировать код в буфер обмена
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandler создает независимый от фреймворка Node.js middleware (req, res, next), который содержит всю логику локализации роутинга. Это полезно в средах, где API плагинов Vite недоступен (например, на обычном сервере Node.js или в кастомном модуле Nitro).
Копировать код в буфер обмена
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 (TanStack Start / Nitro через h3)
Копировать код в буфер обмена
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Поведение роутинга
Этот middleware дублирует логику роутинга из middleware next-intlayer и поддерживает все режимы роутинга Intlayer.
Режимы роутинга
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Режим | URL виден в браузере | Поведение |
|---|---|---|
prefix | /ru/about | По умолчанию. Префикс языка в URL. Язык по умолчанию перенаправляет на URL без префикса, если не активен prefix-all. |
prefix-all | /en/about, /ru/about | Все языки (включая язык по умолчанию) всегда имеют префикс в URL. |
no-prefix | /about | Нет языка в URL. Язык сохраняется только в cookies; перезапись URL происходит на внутреннем уровне. |
search-params | /about?locale=ru | Язык передается как query-параметр. Перенаправляет для добавления/обновления параметра locale, если он отсутствует или устарел. |
Приоритет определения
- Префикс пути URL (например,
/ru/about→ru). - Значение в cookie / localStorage (
intlayer-locale). - Заголовок
Accept-Language. defaultLocaleиз конфигурации.
Автоматический обход (Bypass)
Этот middleware всегда пропускает следующие запросы напрямую без обработки локали:
- Запросы, соответствующие предикату
ignore. /node_modules/**/@**— внутренние запросы Vite (@vite/,@fs/,@id/и т.д.)./_**— внутренние запросы сервера (__vite_ping,__manifestи т.д.).- Запросы, путь которых заканчивается расширением файла (статические файлы). Если в пути статического файла присутствует языковой префикс (например,
/ru/logo.png), он удаляется, чтобы файл мог быть отдан корректно.
Роутинг по доменам
Когда в вашей конфигурации Intlayer настроен параметр routing.domains, этот middleware обрабатывает роутинг языков между разными доменами:
- Запрос для
/zh/aboutна доменеintlayer.orgперенаправляется наhttps://intlayer.zh/about, когдаdomains.zh = "intlayer.zh". - Запрос к
intlayer.zh/aboutвнутренне переписывается в/zh/about, чтобы заполнился параметр маршрута[locale].
Защита от бесконечного редиректа
Этот middleware отслеживает количество перенаправлений для пары originalUrl → newUrl в скользящем 2-секундном окне. Более 10 перенаправлений в этом окне возвращают ошибку 500 с подробным описанием вместо бесконечного цикла.
Nitro / SSR в продакшене (автоматическое внедрение, v9+)
Когда intlayerProxy используется как плагин Vite, он содержит свойство .nitro. Плагин сборки nitro/vite считывает это свойство и помещает его в nitroConfig.modules, благодаря чему intlayerNitroHandler регистрируется как middleware сервера Nitro автоматически — для продакшен SSR не требуется ручная настройка.
Обработчик Nitro использует модель событий Web Fetch API h3 v2 (а не fromNodeMiddleware), поэтому он совместим со всеми пресетами Nitro: Node, Bun, Deno, edge runtimes.
Устаревшие алиасы
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Устаревший экспорт | Замена |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |