Как убрать дубли URL с параметрами из индекса WordPress без удаления страниц

На WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за технических деталей: UTM-метки, сортировки, фильтры, параметры поиска, пагинация, служебные query string. Если такие URL начинают индексироваться, поисковик видит несколько версий одной и той же страницы, а обновления контента расходятся по разным адресам.

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

Как понять, что проблема именно в параметрах URL

Сначала стоит проверить не «просел ли сайт вообще», а есть ли в индексе лишние варианты одной и той же страницы. Для WordPress это обычно видно по таким признакам:

  • в поиске находятся URL вида ?utm_source=..., ?sort=..., ?replytocom=...;
  • одна и та же запись открывается по нескольким адресам, а canonical указывает не туда;
  • в Search Console растёт число страниц с параметрами, но реальных новых страниц не добавлялось;
  • в логах и аналитике много заходов на служебные URL, которые не должны быть посадочными.

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

Что проверить в первую очередь

  • исходный HTML страницы: какой canonical реально отдается;
  • нет ли у темы или плагина генерации ссылок с параметрами в меню, хлебных крошках и блоках;
  • как ведут себя параметры при открытии: меняется ли контент или только сортировка/вид;
  • есть ли редирект с технических вариантов на чистый URL;
  • не отправляются ли в IndexNow адреса с параметрами через хук сохранения записи.

Какая стратегия лучше: canonical, редирект или noindex

Здесь не стоит выбирать один инструмент на все случаи. Для WordPress обычно работает комбинация, а не один «магический» способ.

СценарийЧто делатьКомпромисс
UTM и рекламные меткиОставить страницу доступной, ставить canonical на чистый URLПараметры не должны менять контент
Служебные параметры сортировкиЕсли контент тот же — canonical; если это мусорный URL — 301 на основную версиюНужно аккуратно проверить логику темы и фильтров
Внутренний поиск с query stringЧаще всего noindex и запрет индексации шаблона поискаНе все поисковые URL стоит редиректить
Дубли от пагинации и фильтровОставить только полезные страницы, остальное нормализоватьНельзя ломать навигацию и сортировку

Если параметр не меняет смысл страницы, canonical обычно безопаснее редиректа. Если URL технический и не нужен пользователю, лучше 301 на чистую версию. Если страница нужна в интерфейсе, но не должна попадать в индекс, используйте noindex на уровне шаблона или плагина SEO.

Пошаговое решение для WordPress

1. Нормализуйте внутренние ссылки

Частая ошибка — когда дубли создаются самим сайтом. Например, тема вставляет ссылки с UTM в меню, а плагин аналитики добавляет параметры к внутренним переходам. Это нужно убрать в источнике, а не лечить постфактум.

Проверьте:

  • меню и кнопки в шапке;
  • ссылки в блоках редактора;
  • виджеты и шаблоны карточек;
  • автоматическую подстановку параметров в шаблонах.

2. Добавьте canonical для URL с параметрами

Если у вас есть собственная логика генерации страниц, можно принудительно указывать canonical на чистый адрес. Ниже пример для темы или небольшого mu-plugin: он убирает query string из canonical для обычных записей и страниц.

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (! $post instanceof WP_Post) {
        return $canonical;
    }

    if (is_admin()) {
        return $canonical;
    }

    $clean = get_permalink($post);
    return $clean ?: $canonical;
}, 10, 2);

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

3. Перенаправьте технические параметры на чистый URL

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

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

    $bad_params = ['replytocom', 'ref', 'source'];
    foreach ($bad_params as $param) {
        if (isset($_GET[$param])) {
            $url = remove_query_arg($bad_params, home_url(add_query_arg([], $_SERVER['REQUEST_URI'])));
            wp_safe_redirect($url, 301);
            exit;
        }
    }
});

Здесь важно не делать редирект «всех параметров подряд». Иначе можно сломать поиск, фильтры, сортировку и даже страницы входа, если логика написана неаккуратно.

4. Не отправляйте дубли в IndexNow

Если вы уже интегрировали IndexNow, отправляйте только канонический URL. Для этого перед отправкой надо вычистить query string и не подставлять параметры из $_GET.

<?php
function indexnow_clean_permalink($url) {
    $parts = wp_parse_url($url);
    if (empty($parts['scheme']) || empty($parts['host'])) {
        return $url;
    }

    $clean = $parts['scheme'] . '://' . $parts['host'];
    if (!empty($parts['port'])) {
        $clean .= ':' . $parts['port'];
    }
    $clean .= $parts['path'] ?? '/';

    return $clean;
}

Если у вас отправка завязана на сохранение записи, проверяйте, что в очередь попадает именно get_permalink($post_id), а не текущий адрес из запроса. Это особенно важно в админке, где URL может содержать служебные параметры.

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

Проверка должна быть не только визуальной. Нужны три уровня контроля: браузер, исходный код и поисковый индекс.

  1. Откройте URL с параметром и убедитесь, что он либо редиректит на чистую версию, либо отдаёт canonical на основной адрес.
  2. Посмотрите исходный HTML: canonical должен вести на один и тот же URL без параметров.
  3. Проверьте, что в sitemap и в очереди IndexNow нет параметризованных адресов.
  4. Через несколько дней сравните отчёты Search Console: число дублей и страниц с параметрами должно снижаться, а не расти.

Для быстрой ручной проверки удобно использовать curl -I:

curl -I 'https://example.com/post/?utm_source=test'

В ответе смотрите статус: для редиректа должен быть 301 или 302 только если это осознанно, а не случайно. Если редиректа нет, проверьте canonical и заголовки X-Robots-Tag, если они используются.

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

Редирект на все параметры без разбора

Так ломают фильтры, поиск и страницы с сортировкой. Исправление простое: редиректить только заранее известные технические параметры, а не весь query string.

Canonical указывает на главную страницу

Это часто случается из-за неверной логики в теме или SEO-плагине. Для записи canonical должен вести на её собственный чистый URL, а не на homepage. Иначе поисковик начинает считать страницу нерелевантной.

IndexNow получает все варианты URL

Если отправлять и чистый адрес, и адрес с параметрами, вы создаёте конкурирующие сигналы. Исправление: нормализовать URL до отправки и исключить query string из очереди.

noindex ставят на полезные страницы

Иногда разработчики закрывают от индексации всё подряд, включая страницы, которые должны ранжироваться. Это особенно опасно для архивов, фильтров и категорий с трафиком. Сначала проверьте, действительно ли страница мусорная, а потом уже ставьте noindex.

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

Не храните список параметров прямо в шаблоне, если он меняется под проект. Лучше вынести его в конфиг или в небольшой mu-plugin, чтобы не потерять логику при обновлении темы. Не используйте тяжёлые запросы к базе на каждом хите ради проверки дублей: нормализация URL должна работать быстро и предсказуемо.

Если сайт большой, не пытайтесь «починить всё» массовой переиндексацией. Сначала уберите источник дублей, потом проверьте canonical и редиректы, и только после этого отправляйте в IndexNow только чистые адреса. Иначе поисковые системы просто быстрее увидят старую проблему.

Если нужен более широкий контроль дублей и технической чистки WordPress, в связке с SEO-задачами часто используют Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, где именно рождается дубль: в теме, в плагине или в ручной разметке.

Практический чек-лист перед выкладкой

  • проверены все типовые параметры: UTM, сортировка, поиск, replytocom;
  • canonical на чистых страницах ведёт на правильный URL;
  • технические параметры редиректятся только точечно;
  • в IndexNow отправляются только канонические адреса;
  • в sitemap нет мусорных вариантов;
  • после правок проверен ответ сервера и исходный HTML;
  • страницы, которые должны индексироваться, не получили случайный noindex.

Если после внедрения дублей меньше не стало, обычно проблема не в индексации, а в генерации ссылок. Тогда нужно искать источник параметров в шаблонах, блоках редактора, фильтрах и плагинах аналитики, а не только в SEO-настройках.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Автоматическая отправка URL при изменении постов WordPress
07.02.2026
Как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс с помощью IndexNow
26.03.2026
Как правильно настроить ограничение частоты запросов IndexNow в WordPress
17.03.2026
Как удалить из индекса WordPress старые изображения с помощью IndexNow
14.12.2025
Автоматическая отправка URL для пользовательских таксономий WordPress
10.02.2026
×
Прокачай свой WordPress!

Скидка -20% на премиум темы и плагины

Воспользоваться сейчас ⋙