Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Implement centralized URL rewrites with framework-specific formatters and the useRewriteURL hook."v8.0.025.01.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
Реалізація користувацьких правил переписування 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) до його більш привабливого локалізованого аліаса.