Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Implement centralized URL rewrites with framework-specific formatters and the useRewriteURL hook."v8.0.025.01.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Реалізація користувацьких правил переписування URL
Intlayer підтримує користувацькі правила переписування URL, що дозволяють визначати локалезовані шляхи, які відрізняються від стандартної структури /locale/path. Це дає змогу використовувати такі URL, як /about для англійської та /a-propos для французької, водночас зберігаючи канонічну внутрішню логіку застосунку.
Конфігурація
Користувацькі перенаписування налаштовуються в розділі routing файлу intlayer.config.ts з використанням форматерів, специфічних для фреймворку. Ці форматери забезпечують правильний синтаксис для вашого обраного роутера.
Скопіюйте код у буфер обміну
import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = { // ... (інші налаштування) routing: { mode: "prefix-no-default", rewrite: nextjsRewrite({ "/[locale]/about": { fr: "/[locale]/a-propos", es: "/[locale]/acerca-de", }, "/[locale]/products/[id]": { fr: "/[locale]/produits/[id]", es: "/[locale]/productos/[id]", }, }), },};export default config;Доступні форматери
Intlayer надає форматери для всіх популярних фреймворків:
nextjsRewrite: Для Next.js App Router. Підтримує[slug],[...slug](1+), та[[...slug]](0+).svelteKitRewrite: Для SvelteKit. Підтримує[slug],[...path](0+), та[[optional]](0-1).reactRouterRewrite: Для React Router. Підтримує:slugта*(0+).vueRouterRewrite: Для Vue Router 4. Підтримує:slug,:slug?(0-1),:slug*(0+), та:slug+(1+).solidRouterRewrite: Для Solid Router. Підтримує:slugта*slug(0+).tanstackRouterRewrite: Для TanStack Router. Підтримує$slugта*(0+).nuxtRewrite: Для Nuxt 3. Підтримує[slug]та[...slug](0+).viteRewrite: Універсальний форматер для будь-якого проєкту на базі Vite. Нормалізує синтаксис для Vite proxy.
Розширені шаблони
Intlayer внутрішньо нормалізує ці шаблони до уніфікованого синтаксису, що дозволяє здійснювати складне зіставлення й генерацію шляхів:
- Необов'язкові сегменти:
[[optional]](SvelteKit) або:slug?(Vue/React) підтримуються. - Catch-all (нуль або більше):
[[...slug]](Next.js),[...path](SvelteKit/Nuxt), або*(React/TanStack) дозволяють відповідати кільком сегментам. - Обов'язковий catch-all (один або більше):
[...slug](Next.js) або:slug+(Vue) забезпечують наявність принаймні одного сегмента.
Корекція URL на стороні клієнта: useRewriteURL
Щоб адресний рядок браузера завжди відображав "pretty" локалізований URL, Intlayer надає хук useRewriteURL. Цей хук непомітно оновлює URL за допомогою window.history.replaceState, коли користувач потрапляє на канонічний шлях.
Використання у фреймворках
Скопіюйте код у буфер обміну
'use client';import { useRewriteURL } from "next-intlayer";const MyLayout = ({ children }) => { useRewriteURL(); // Автоматично виправляє /fr/about на /fr/a-propos return <>{children}</>;};Інтеграція маршрутизатора та проксі
Серверні проксі Intlayer (Vite і Next.js) автоматично обробляють кастомні переписування, щоб забезпечити узгодженість для SEO.
- Внутрішні переписування: Коли користувач заходить на
/fr/a-propos, проксі внутрішньо відображає це на/fr/about, щоб ваш фреймворк відповідав правильному маршруту. - Авторитетні редиректи: Якщо користувач вручну вводить
/fr/about, проксі відправляє 301/302 редирект на/fr/a-propos, гарантуючи, що пошукові системи індексують лише одну версію сторінки.
Інтеграція з Next.js
Інтеграція з Next.js повністю здійснюється через middleware intlayerProxy.
Скопіюйте код у буфер обміну
import { intlayerProxy } from "next-intlayer/middleware";import { NextRequest } from "next/server";export function middleware(request: NextRequest) { return intlayerProxy(request);}Інтеграція з Vite
Для SolidJS, Vue та Svelte Vite-плагін intlayerProxy керує перезаписами під час розробки.
Скопіюйте код у буфер обміну
import { defineConfig } from "vite";import { intlayerProxy } from "vite-intlayer";export default defineConfig({ plugins: [intlayerProxy()],});Ключові можливості
1. Багатоконтекстні перезаписи
Кожен форматер генерує RewriteObject, що містить спеціалізовані правила для різних споживачів:
url: Оптимізовано для генерації URL на боці клієнта (видаляє сегменти локалі).nextjs: Зберігає[locale]для middleware Next.js.vite: Зберігає:localeдля проксі Vite.
2. Автоматична нормалізація шаблонів
Intlayer внутрішньо нормалізує всі синтаксиси шаблонів (наприклад, перетворює [param] на :param), щоб зіставлення залишалося послідовним незалежно від вихідного фреймворку.
3. SEO авторитетні URL-адреси
Забезпечуючи перенаправлення з канонічних шляхів на більш привабливі аліаси, Intlayer запобігає проблемам дубльованого контенту та покращує знаходжуваність сайту.
Основні утиліти
getLocalizedUrl(url, locale): Генерує локалізований URL з урахуванням правил перезапису.getCanonicalPath(path, locale): Відновлює локалізований URL до його внутрішнього канонічного шляху.getRewritePath(pathname, locale): Визначає, чи потрібно виправити шлях (pathname) до його більш привабливого локалізованого аліаса.