Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Этот документ устарел, базовая версия была обновлена 3 апреля 2026 г..
Перейти к английской документацииИстория версий
- "Добавлена маршрутизация локалей на основе доменов через конфигурацию routing.domains."v8.5.002.04.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Пользовательские домены
Intlayer поддерживает маршрутизацию локалей на основе доменов, что позволяет обслуживать определенные локали с выделенных хост-имен. Например, китайские посетители могут быть направлены на intlayer.zh вместо intlayer.org/zh.
Как это работает
Карта domains в routing связывает каждую локаль с хост-именем. Intlayer использует эту карту в двух местах:
- Генерация URL (
getLocalizedUrl): когда целевая локаль находится на другом домене по сравнению с текущей страницей, возвращается абсолютный URL (например,https://intlayer.zh/about). Когда домены совпадают, возвращается относительный URL (например,/fr/about). - Серверный прокси (Next.js и Vite): входящие запросы перенаправляются или перезаписываются в зависимости от домена, на который они поступают.
Эксклюзивные и общие домены
Ключевое различие заключается в эксклюзивности:
- Эксклюзивный домен - только одна локаль сопоставляется с этим хост-именем (например,
zh → intlayer.zh). Сам домен идентифицирует локаль, поэтому префикс локали не добавляется к пути.https://intlayer.zh/aboutобслуживает китайский контент. - Общий домен - несколько локалей сопоставляются с одним и тем же хост-именем (например, и
en, иfrсопоставляются сintlayer.org). Применяется стандартная маршрутизация на основе префиксов.intlayer.org/fr/aboutобслуживает французский контент.
Конфигурация
Локали, не указанные в domains, продолжают использовать стандартную префиксную маршрутизацию без переопределения домена.
Генерация URL
getLocalizedUrl автоматически создает правильный тип URL в зависимости от контекста вызова.
Локаль на том же домене (относительный URL)
Междоменная локаль (абсолютный URL)
Обслуживание с собственного домена локали
Автоматическое определение текущего домена
Параметр currentDomain является необязательным. Если он опущен, getLocalizedUrl разрешает его в следующем порядке:
- Имя хоста из абсолютного входного URL (например,
https://intlayer.org/about→intlayer.org). window.location.hostnameв браузерной среде.- Если ни один из вариантов недоступен (SSR без явного указания параметра), возвращается относительный URL для локалей на том же домене, а абсолютный URL не создается - это безопасный резервный вариант.
getMultilingualUrls с доменами
getMultilingualUrls вызывает getLocalizedUrl для каждой локали, поэтому он создает смесь относительных и абсолютных URL в зависимости от домена вызывающей стороны:
Эти абсолютные URL готовы к использованию в тегах <link rel="alternate" hreflang="..."> для SEO.
Поведение прокси
Next.js
Посредник (middleware) intlayerProxy автоматически обрабатывает доменную маршрутизацию. Добавьте его в ваш middleware.ts:
Перенаправление (Redirect) - запрос поступает на неправильный домен для данного префикса локали:
Перезапись (Rewrite) - запрос поступает на эксклюзивный домен локали без префикса:
Vite
Плагин Vite intlayerProxy применяет ту же логику во время разработки:
Примечание: при локальной разработке вы обычно используетеlocalhost, поэтому междоменные перенаправления будут указывать на живые домены, а не на другой локальный порт. Используйте переопределение файла hosts (например,127.0.0.1 intlayer.zh) или обратный прокси, если вам нужно протестировать многодоменную маршрутизацию локально.
Переключатель локалей
Хук useLocale из next-intlayer автоматически обрабатывает навигацию с учетом доменов. Когда пользователь переключается на локаль, находящуюся на другом домене, хук выполняет полную навигацию по странице (window.location.href) вместо изменения состояния роутера на стороне клиента, так как роутер Next.js не может переходить между разными источниками (origins).
Никакой дополнительной настройки не требуется - useLocale внутренне определяет window.location.hostname и выбирает между router.replace (тот же домен) и window.location.href (другой домен).
SEO: альтернативные ссылки hreflang
Маршрутизация на основе доменов часто используется вместе с hreflang, чтобы сообщить поисковым системам, какой URL индексировать для каждого языка. Используйте getMultilingualUrls для генерации полного набора альтернативных URL:
Это создает:
Основные утилиты
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Утилита | Описание |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | Возвращает относительный или абсолютный URL в зависимости от того, находится ли целевая локаль на текущем домене. |
getMultilingualUrls(url, { currentDomain }) | Возвращает карту локализованных URL по локалям, смешивая относительные и абсолютные URL по мере необходимости. |
getPrefix(locale, { domains }) | Возвращает пустой префикс для локалей с эксклюзивным доменом, в противном случае - обычный префикс. |