Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Ця документація застаріла, базову версію оновлено станом на 3 квітня 2026 р..
Перейти до англійської версії документаІсторія версій
- "Додано маршрутизацію локалей на основі доменів через конфігурацію routing.domains."v8.5.002.04.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на 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) або зворотний проксі, якщо вам потрібно протестувати багатодоменну маршрутизацію локально.
Перемикач локалей (Locale Switcher)
Хук 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 за ключем локалі, змішуючи відносні та абсолютні за потреби. |
getPrefix(locale, { domains }) | Повертає порожній префікс для локалей з ексклюзивним доменом, інакше - звичайний префікс. |