Создание:2025-08-23Последнее обновление:2025-08-23

    Хук useRewriteURL

    Хук useRewriteURL для Next.js, это клиентский хук, который автоматически управляет локализованными переписыванием URL. Он обеспечивает соответствие URL в адресной строке браузера «красивому» локализованному пути, определённому в вашем intlayer.config.ts, даже если пользователь вручную вводит канонический путь с префиксом локали.

    Этот хук работает незаметно, используя window.history.replaceState, что позволяет избежать лишних навигаций через роутер Next.js или перезагрузок страницы.

    Использование

    Просто вызовите хук в Client Component, который является частью вашего layout.

    "use client";
    
    import { useRewriteURL } from "next-intlayer";
    
    const MyClientComponent = () => {
      // Автоматически исправляет /fr/privacy-notice на /fr/politique-de-confidentialite в адресной строке
      useRewriteURL();
    
      return null;
    };

    Как это работает

    1. Отслеживание пути: Хук слушает изменения locale пользователя.
    2. Обнаружение перезаписи: Он сверяет текущий window.location.pathname с правилами перезаписи в вашей конфигурации.
    3. Корректировка URL: Если для текущего пути найден более «красивый» локализованный псевдоним, хук вызывает window.history.replaceState, чтобы обновить адресную строку, при этом оставляя пользователя на той же внутренней странице.

    Зачем использовать это в Next.js?

    Пока intlayerMiddleware обрабатывает серверные переписывания и начальные перенаправления, хук useRewriteURL гарантирует, что URL в браузере остается согласованным с вашей предпочтительной SEO-структурой даже после клиентских переходов.

    • Чистые URL: Обеспечивает использование локализованных сегментов, например /fr/essais вместо /fr/tests.
    • Производительность: Обновляет адресную строку без запуска полного цикла роутера или повторной выборки данных.
    • Соответствие SEO: Предотвращает проблемы с дублированным контентом, обеспечивая видимость только одной версии URL для пользователей и поисковых ботов.