Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Реализовано централизованное управление перезаписями URL с использованием форматтеров, специфичных для фреймворка, и хука useRewriteURL."v8.0.025.01.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на 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
Чтобы адресная строка браузера всегда отображала «красивый» локализованный 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) автоматически обрабатывают пользовательские правила перезаписи (custom rewrites) для обеспечения согласованности 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 управляет правилами переписывания (rewrites) во время разработки.
Копировать код в буфер обмена
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. Авторитетные URL (SEO)
Принуждая к перенаправлениям с канонических путей на более «красивые» алиасы, Intlayer предотвращает проблемы с дублированным контентом и улучшает обнаруживаемость сайта.
Основные утилиты
getLocalizedUrl(url, locale): Генерирует локализованный URL с учётом правил переписывания.getCanonicalPath(path, locale): Преобразует локализованный URL обратно в его внутренний канонический путь.getRewritePath(pathname, locale): Определяет, нужно ли скорректировать путь до более «красивого» локализованного алиаса.