wplangs.ru wordpress WP Langs

WooCommerce: как убрать языковой код из URL товаров без потери SEO

Проблема: языковой код в URL товаров WooCommerce мешает SEO и удобству пользователей

При использовании многоязычных плагинов для WordPress (например, WPML или Polylang) часто возникает ситуация, когда в URL товаров WooCommerce добавляется языковой код, например, /en/product-name/ или /ru/product-name/. Хотя это удобно для разделения языков, в некоторых случаях необходимо убрать языковой префикс из URL, чтобы получить чистые адреса товаров, например /product-name/, без потери SEO-позиций и без конфликтов с многоязычностью сайта.

Диагностика проблемы

  • Проверьте, какой плагин многоязычности установлен и как он добавляет языковой код в URL (WPML, Polylang, TranslatePress и т.п.).
  • Убедитесь, что WooCommerce работает в связке с этим плагином и что URL товаров действительно содержат языковой префикс.
  • Проверьте, как ведут себя URL страниц, категорий и других таксономий — добавляется ли языковой код везде или только для товаров.
  • Проанализируйте настройки постоянных ссылок (Permalinks) в WordPress: иногда языковой код внедряется через rewrite rules.

Пошаговое решение: убрать языковой код из URL товаров WooCommerce

1. Настройка плагина многоязычности

Большинство популярных плагинов позволяют убрать языковой префикс для языка по умолчанию. Например, в Polylang в настройках «URL modifications» можно выбрать «Remove URL language code for default language». Это уберёт префикс для основного языка, но для других языков он останется.

2. Фильтрация rewrite правил через functions.php

Если необходимо полностью убрать языковой код из URL товаров для всех языков, можно использовать фильтры WordPress для изменения правил перезаписи и редиректов.

Пример кода, который удаляет языковой префикс из URL товаров при использовании Polylang:

add_filter('pll_get_post_types', function($post_types) {
    // Исключаем тип 'product' из обработки языковых префиксов
    if (($key = array_search('product', $post_types)) !== false) {
        unset($post_types[$key]);
    }
    return $post_types;
});

Этот код исключает пост-тип product из многоязычной обработки, что убирает языковой код из URL товаров.

3. Правильная настройка постоянных ссылок WooCommerce

Перейдите в Настройки > Постоянные ссылки и убедитесь, что структура для товаров не содержит языковой части. Например, структура /product/%product% без префикса.

4. Настройка редиректов и canonical

Чтобы избежать проблем с SEO, необходимо перенаправлять старые URL с языковым кодом на новые без кода и правильно выставлять канонические ссылки.

Пример добавления 301-редиректа для старых URL с языковым кодом (в файле .htaccess или через плагин Redirection):

RewriteCond %{REQUEST_URI} ^/(ru|en)/product/(.+)$
RewriteRule ^ /product/%2 [R=301,L]

Также убедитесь, что в заголовках страниц установлен правильный канонический URL без языкового кода. Для этого в functions.php можно добавить:

add_filter('wpseo_canonical', function($canonical) {
    return preg_replace('#/(ru|en)/product/#', '/product/', $canonical);
});

Проверка результата после внедрения

  • Откройте товар на сайте и проверьте URL — языковой код должен отсутствовать.
  • Проверьте работу редиректов: старый URL с языковым кодом должен корректно 301 редиректиться на новый.
  • Проверьте канонические ссылки через инспектор кода страницы или с помощью SEO-плагина — они должны указывать на URL без языкового кода.
  • Протестируйте работу переключателя языков — URL для других языков также должны быть без префикса или вести на корректные страницы.

Частые ошибки и как их исправить

  • Языковой код убран, но переключение языков ломается: проверьте, что исключение пост-типов из обработки языков не конфликтует с логикой плагина. Иногда лучше оставить языковой код для неосновных языков.
  • Редиректы не работают или вызывают бесконечные циклы: внимательно настройте правила в .htaccess, проверяйте приоритеты правил и отключайте кэширование при тестировании.
  • Канонические ссылки не меняются: убедитесь, что фильтр на их изменение добавлен корректно и не переопределяется SEO-плагинами или темой.
  • SEO-позиции упали: убедитесь, что все старые URL корректно редиректятся на новые, а в Google Search Console обновлены карты сайта и индексация.

Практические советы по производительности и безопасности

  • Не используйте сложные регулярные выражения в rewrite правилах, чтобы не замедлять обработку URL.
  • Кэшируйте редиректы с помощью плагинов, например, Redirection — это снизит нагрузку на сервер.
  • Обновляйте sitemap после изменений URL, чтобы поисковики быстрее переиндексировали страницы.
  • Проверяйте совместимость всех плагинов многоязычности и WooCommerce после внесения изменений.

Сравнительная таблица вариантов удаления языкового кода из URL товаров

МетодПреимуществаНедостаткиРекомендации
Настройка плагина (например, Polylang)Простота, поддержка плагиномОбычно убирает код только для основного языкаЛучше для сайтов с одним главным языком
Исключение post type из обработки языков (фильтр в functions.php)Полное удаление кода для всех языковМожет сломать переключение языков, требует тестированияИспользовать осторожно, тестировать на всех языках
Редиректы в .htaccessГарантирует SEO-переадресациюТребует правильной настройки, можно создать циклыИспользовать вместе с изменением плагина
Изменение канонических URLУлучшает SEO без изменения структуры сайтаНе убирает языковой код из URLРекомендуется для поддержки SEO
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее