wplab.ru wordpress wplab.ru

Устранение дублей страниц в WordPress: canonical, noindex и редиректы без лишнего риска

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы пагинации, параметры в URL, версии с www и без, http и https, а иногда и из-за темы или плагина, который создает отдельные пути к одному и тому же контенту. В результате поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым, а вы получаете размытие сигналов, лишние обходы и путаницу в индексации.

Ниже — рабочая схема, которая помогает не «прятать всё подряд», а аккуратно оставить в индексе нужные страницы и убрать технические дубли.

Где именно появляются дубли и как это быстро проверить

Сначала стоит понять, какой тип дубля у вас на сайте. От этого зависит решение: где-то нужен rel="canonical", где-то noindex, а где-то правильнее поставить 301-редирект.

Типовые источники дублей

  • страницы с параметрами в URL: ?utm_source=..., ?replytocom=..., фильтры, сортировки;
  • архивы рубрик, тегов, автора и дат, если они дублируют основной контент;
  • страницы пагинации архивов;
  • доступ к одному адресу через http и https, с www и без;
  • дубли из-за вложенных страниц и таксономий;
  • служебные страницы, которые случайно попали в индекс через внутренние ссылки;
  • версии контента, которые создаёт плагин: поиск, сортировка, AJAX-вывод, вкладки.

Диагностика без гадания

Проверьте сайт по нескольким признакам:

  • введите в поиск Google оператор site:example.ru и посмотрите, какие URL уже в индексе;
  • сравните адреса в отчёте «Страницы» в Google Search Console;
  • откройте исходный код проблемной страницы и найдите <link rel="canonical">;
  • проверьте, не отдает ли один и тот же контент разные HTTP-коды или разные заголовки;
  • посмотрите, не создаёт ли плагин SEO или кэш отдельные версии URL.

Если у вас есть доступ к консоли, полезно проверить редиректы и каноникал напрямую:

curl -I https://example.ru/page/?utm_source=test
curl -I https://example.ru/page/

Смотрите на код ответа, Location при редиректе и на то, не меняется ли конечный адрес в цепочке.

Что делать: выбрать правильный способ для каждого типа дубля

Одна из частых ошибок — закрывать всё через noindex. Это не решает проблему адреса как такового. Если у дубля есть очевидный «главный» URL, лучше сначала привести пользователей и роботов к нему через редирект или canonical, а уже потом решать, нужно ли индексировать саму страницу.

СитуацияЛучший вариантКомпромисс
Одинаковый контент на двух URL301-редирект на канонический адресcanonical, если редирект ломает сценарий
Архивы тегов или автора не нужны в поискеnoindex, followудаление внутренних ссылок на архивы
Параметры сортировки и UTMcanonical на чистый URLигнорирование параметров в аналитике
Пагинация архивовоставить доступной, но не дублировать мета-данныеnoindex для слабых архивов

1. Настройте канонический URL

Если SEO-плагин уже умеет выставлять canonical, проверьте, что он указывает на основной адрес без параметров. Для WordPress это особенно важно на страницах с UTM-метками, сортировкой и служебными параметрами.

Если нужно задать canonical вручную для конкретного шаблона, можно сделать это через wp_head:

add_action('wp_head', function () {
    if (is_singular('post')) {
        echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
    }
}, 1);

Этот пример уместен только если ваша тема или SEO-плагин не выводит canonical корректно. Дублировать тег в идеале не нужно: проверьте исходный код страницы, чтобы не получить два canonical одновременно.

2. Закройте от индексации служебные архивы

Если теги, архивы автора или даты не дают ценности пользователю и только плодят страницы, их лучше закрыть от индексации. Важно: noindex не должен превращаться в универсальную кнопку «спрятать всё». Для полезных архивов это может ухудшить внутреннюю перелинковку и навигацию.

Вариант через wp_robots выглядит так:

add_filter('wp_robots', function (array $robots) {
    if (is_tag() || is_date() || is_author()) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Если используете SEO-плагин, сначала проверьте его настройки: часто это уже можно сделать без кода. Код нужен, когда требуется точечная логика по типам архивов.

3. Уберите дубли через 301-редирект

Редирект нужен там, где есть явный дубль одного и того же материала: http на https, www на non-www, старый адрес на новый, страницы с параметрами на чистый URL. Это самый понятный сигнал для поисковика и для браузера.

Пример редиректа для параметров replytocom и UTM, если они не нужны в адресе:

add_action('template_redirect', function () {
    if (is_admin() || wp_doing_ajax()) {
        return;
    }

    $remove_params = ['replytocom', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
    $has_params = false;

    foreach ($remove_params as $param) {
        if (isset($_GET[$param])) {
            $has_params = true;
            break;
        }
    }

    if (!$has_params) {
        return;
    }

    $url = remove_query_arg($remove_params, home_url(add_query_arg([], $_SERVER['REQUEST_URI'])));
    wp_safe_redirect($url, 301);
    exit;
});

Этот код стоит использовать осторожно: если у вас аналитика или рекламные кампании завязаны на параметрах, не удаляйте их на уровне сервера или WordPress без проверки. Иногда лучше оставить параметры в URL, но настроить canonical на чистую страницу.

Пошаговая схема внедрения без поломки индексации

  1. Составьте список URL, которые повторяют один и тот же контент.
  2. Разделите их на три группы: редирект, canonical, noindex.
  3. Проверьте, нет ли у страницы внешних ссылок, которые могут сломаться после редиректа.
  4. Сначала внедрите редиректы для явных дублей.
  5. Потом настройте canonical на оставшихся страницах.
  6. И только затем закройте от индексации слабые архивы и служебные страницы.

Если сайт большой, не вносите все изменения сразу. Лучше менять по одному типу дублей и проверять Search Console после каждого шага.

Как проверить, что решение сработало

После внедрения важно не просто увидеть «зелёные галочки» в плагине, а проверить поведение реальных URL.

  • откройте старый URL и убедитесь, что он отдает 301 на нужную страницу;
  • проверьте исходный код конечной страницы: canonical должен указывать на неё же;
  • убедитесь, что страницы с noindex действительно отдают нужный robots-мета-тег или заголовок;
  • в Search Console посмотрите, не растёт ли число «Дубль, Google выбрал другой канонический URL»;
  • прогоните несколько URL через curl -I и проверьте цепочку редиректов.

Полезно сравнить ответ до и после:

curl -I https://example.ru/category/news/
curl -I https://example.ru/category/news/page/2/

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

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

Ставят noindex вместо редиректа

Так делают, когда хотят быстро «убрать дубль из поиска». Но сам URL остаётся доступным, а поисковик продолжает тратить ресурсы на его обход. Если есть главный адрес, лучше редирект.

Canonical указывает на несуществующую или неподходящую страницу

Это часто случается после смены структуры ссылок или при ручной правке шаблонов. Проверьте, что canonical ведёт на живой URL с кодом 200 и тем же смыслом страницы.

Редирект зацикливается

Причина обычно в конфликте правил: плагин редиректов, .htaccess, настройка SSL и код темы одновременно меняют адрес. Оставьте один источник редиректов и проверьте цепочку.

Закрывают от индексации всё подряд

Если закрыть архивы, страницы пагинации и полезные таксономии без разбора, можно ухудшить внутреннюю перелинковку. Сначала оцените, какие страницы реально нужны пользователю и поиску.

Не учитывают параметры, которые создаёт сам сайт

Например, replytocom в комментариях или параметры сортировки в фильтрах. Такие URL часто появляются автоматически, и их нужно ловить отдельно, а не только через общие SEO-настройки.

Что учесть для безопасности и производительности

Чем больше у вас кастомной логики для дублей, тем важнее не перегрузить сайт лишними проверками на каждом запросе. Не стоит писать громоздкие условия в template_redirect, если задачу можно решить настройкой SEO-плагина или правилом веб-сервера.

Если вы вносите изменения кодом, держите их в дочерней теме или в небольшом mu-plugin, а не в файле основной темы. Так обновление не сотрёт правки. Перед выкладкой проверьте изменения на staging-копии и сохраните резервную копию базы и файлов.

Для сайтов, где проблема дублей сочетается с общей технической чисткой, имеет смысл посмотреть в сторону инструментов, которые помогают убрать лишние архивы, дубли мета-данных и служебные страницы. Например, в Clearfy Pro есть набор настроек для технической оптимизации и удаления части дублей, но применять такие решения всё равно нужно после проверки конкретной структуры сайта: универсальной кнопки «исправить SEO» не существует.

Если нужен быстрый аудит, начните с трёх вопросов: какой URL должен быть главным, что должно индексироваться, и какие адреса вообще не должны существовать как отдельные страницы. Когда на них есть ответ, дубли в WordPress обычно удаётся убрать без лишних побочных эффектов.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше