Как найти и удалить дубли страниц в WordPress без потери индексации

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

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

Когда проблема уже есть: как понять, что в WordPress появились дубли

Первый сигнал — в поиске индексируется больше страниц, чем вы ожидаете. Второй — в Google Search Console растет число URL с пометкой «дубликат, выбран другой канонический URL» или «страница с перенаправлением». Третий — в выдаче всплывают служебные адреса: ?replytocom=, /page/2/, /tag/, результаты поиска по сайту, страницы вложений изображений.

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

  • Откройте несколько версий одного и того же материала: с www и без, с http и https, со слешем и без слеша.
  • Посмотрите исходный код страницы и найдите тег rel="canonical".
  • Проверьте, не индексируются ли страницы поиска вида /?s=....
  • Посмотрите архивы тегов, авторов, дат и пагинацию категорий.
  • Проверьте страницы вложений медиафайлов: часто они дублируют запись или просто пустые.

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

ИсточникЧто происходитЧто делать
Параметры URLОдин и тот же контент доступен с разными query stringОставить canonical на чистый URL, лишние параметры не индексировать
Архивы таксономийПосты дублируются в категориях и тегахЗакрыть слабые архивы или оставить только нужные
Страницы поискаПоисковые результаты создают тонкие страницыЗапретить индексацию и при необходимости отдавать noindex
ВложенияОтдельная страница для картинки повторяет записьРедиректить attachment URL на файл или родительскую запись

Пошаговое решение: что убрать, что оставить, что перенаправить

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

1. Приведите основной домен к одному варианту

В Настройки → Общие проверьте, что WordPress Address и Site Address совпадают по схеме и домену. Если сайт должен работать только на https://example.ru, не оставляйте параллельно доступным http:// или www. без редиректа.

На уровне сервера настройте 301-редирект на один канонический вариант. Для Apache это обычно делается в .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^ https://example.ru%{REQUEST_URI} [L,R=301]

Для Nginx логика та же, только в конфиге сервера. Если вы не уверены в синтаксисе, лучше править конфиг вместе с администратором, а не через случайные сниппеты из интернета.

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

Страницы поиска по сайту почти никогда не должны попадать в индекс. Они создают много мусорных URL и не дают поиску полезного сигнала. Аналогично — архивы дат, если вы не ведете новостной проект, и страницы вложений изображений, если они не несут самостоятельной ценности.

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

add_action('wp_head', function () {
    if (is_search() || is_attachment()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

Это не заменяет canonical и редиректы, но помогает убрать мусор из индекса, пока вы вычищаете структуру сайта.

3. Настройте canonical для страниц с параметрами

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

Для нестандартных шаблонов можно явно задать canonical через wp_head:

add_action('wp_head', function () {
    if (!is_singular()) {
        return;
    }

    $canonical = get_permalink();
    echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}, 1);

Если canonical уже выводит SEO-плагин, не дублируйте тег вручную. Два canonical на странице — частая ошибка, из-за которой поисковик начинает игнорировать оба.

4. Уберите дубли страниц вложений

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

add_action('template_redirect', function () {
    if (is_attachment()) {
        $parent = wp_get_post_parent_id(get_queried_object_id());

        if ($parent) {
            wp_redirect(get_permalink($parent), 301);
            exit;
        }

        $file = wp_get_attachment_url(get_queried_object_id());
        if ($file) {
            wp_redirect($file, 301);
            exit;
        }
    }
});

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

Если дубли создает тема или плагин

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

Как быстро локализовать источник

  • Отключите по очереди плагины, которые работают с фильтрами, поиском, архивами и SEO.
  • Сравните HTML исходных страниц до и после отключения.
  • Проверьте, не создается ли отдельный шаблон для таксономии или автора в теме.
  • Посмотрите, не добавляет ли плагин собственные rewrite rules и query vars.

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

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

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

Чек-лист проверки

  • Откройте основной URL и убедитесь, что все альтернативные версии ведут на него через 301.
  • Проверьте исходный код: один canonical, без дублей.
  • Убедитесь, что страницы поиска и вложений отдают noindex или редиректятся.
  • Посмотрите в Search Console, уменьшилось ли число URL с дублями и перенаправлениями.
  • Проверьте, не сломались ли внутренние ссылки и хлебные крошки.

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

curl -I https://example.ru/page/2/
curl -I https://example.ru/?s=test
curl -I https://www.example.ru/

В ответах смотрите статус-коды, Location при редиректе и заголовки, если их добавляет ваш сервер или плагин.

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

Ставят noindex и забывают про редирект

Это частая полумера. Страница не попадет в индекс, но останется доступной по мусорному URL. Если адрес уже разошелся по внутренним ссылкам или внешним упоминаниям, лучше сделать 301 на канонический вариант.

Закрывают все архивы подряд

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

Дублируют canonical вручную и через плагин

Если SEO-плагин уже выводит canonical, дополнительный код в теме создаст конфликт. Оставьте один источник правды. Иначе поисковик может выбрать не тот URL или проигнорировать оба.

Редиректят вложения на главную

Это плохая замена нормальному поведению. Пользователь теряет контекст, а поисковик получает нерелевантный переход. Лучше вести attachment URL на родительскую запись или сам файл, если это оправдано.

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

Не правьте массово URL через случайные SQL-запросы в базе, если не понимаете, какие записи и метаданные затронете. Для дублей это особенно опасно: можно сломать вложения, меню, связи таксономий и редиректы.

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

Если нужен именно практический набор для SEO и чистки сайта, имеет смысл смотреть на инструменты, где можно отдельно управлять архивами, мета-тегами и служебными страницами, а не включать всё подряд. Но даже с плагином базовая логика остается той же: один канонический URL, минимум мусорных адресов, понятные редиректы и проверка в Search Console.

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

Как создать автоматический импорт постов в WordPress из внешнего источника
15.02.2026
WooCommerce: автоматическое удаление заказов по статусу и дате
10.05.2026
WooCommerce: как правильно изменить URL товара без создания 301 редиректа
21.04.2026
Как создать автоматический импорт постов в WordPress из внешнего источника
03.03.2026
Как создать адаптивный плагин WordPress с настройками
09.11.2025