Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы автора, пагинация, параметры фильтров, версии с ?replytocom, страницы вложений и технические URL от темы или плагинов. Если их не контролировать, поисковик тратит краулинговый бюджет на мусор, а в индексе начинают жить не те страницы, которые вы хотите продвигать.
Ниже — рабочая схема, как понять, что именно дублируется, и чем закрывать каждый тип URL: robots.txt, noindex, canonical или настройками плагина. Без универсальных советов — только те случаи, которые реально встречаются на обычном WordPress-сайте.
Диагностика: какие дубли у вас уже есть
Сначала не трогайте настройки наугад. Посмотрите, какие URL уже попали в индекс и какие из них являются вторичными версиями страниц. Самый быстрый способ — выгрузить данные из Google Search Console и пройтись по сайту вручную.
Что проверить в первую очередь
- страницы тегов и категорий, которые дублируют рубрики или отдельные статьи;
- архивы автора на сайтах с одним автором;
- страницы вложений медиафайлов;
- пагинацию архивов и комментариев;
- URL с параметрами сортировки, поиска, фильтров;
- версии с и без слеша на конце, если сервер или тема настроены криво;
- дубли из-за пагинации в хлебных крошках и блоках навигации.
Если у вас стоит SEO-плагин, посмотрите, не генерирует ли он отдельные мета-теги для архивов и таксономий. Часто проблема не в WordPress как таковом, а в том, что тема или плагин создают лишние страницы, а потом ещё и открывают их для индексации.
Что закрывать через noindex, а что — через robots.txt
Это ключевой момент. robots.txt не удаляет страницу из индекса, если она уже известна поисковику. Он только ограничивает обход. noindex говорит поисковику не показывать страницу в выдаче. Поэтому для дублей, которые уже доступны по URL, обычно нужен именно noindex, а не запрет в robots.txt.
| Подход | Когда использовать | Минус |
|---|---|---|
noindex | Для архивов, тегов, страниц автора, служебных страниц | Страница может ещё какое-то время оставаться в индексе до переобхода |
robots.txt | Для блокировки обхода технических разделов и бесконечных параметров | Не гарантирует удаление из индекса |
canonical | Когда есть основная версия страницы и её варианты | Нужно правильно выбрать канонический URL, иначе сигнал будет слабым |
Если задача — убрать из индекса архивы тегов, но оставить их доступными для пользователя, обычно достаточно noindex, follow. Если же URL создаётся технически и не должен даже обходиться, тогда уже смотрим в сторону robots.txt или серверных правил.
Пошаговое решение для типовых дублей
1. Закройте лишние архивы в SEO-плагине
Если у вас есть SEO-плагин, начните с него. Это безопаснее, чем писать жёсткие правила в коде, потому что плагин обычно сам ставит корректные мета-теги и canonical. Для типового сайта имеет смысл закрыть:
- архивы тегов, если они не несут отдельной ценности;
- архивы автора на сайте с одним автором;
- страницы вложений;
- служебные архивы, которые не нужны в поиске.
Важно не закрывать всё подряд. Если рубрики реально являются посадочными страницами и на них есть уникальный контент, их лучше оставить открытыми и просто следить за качеством.
2. Для вложений делайте редирект на родительскую запись
Страницы вложений — частый источник мусора. Пользователь открывает изображение, а поисковик получает отдельную тонкую страницу без смысла. Правильнее отправлять такие URL на родительскую запись или на сам файл, если это осознанный сценарий.
<?php
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;
}
}
});Этот код лучше использовать только если вы понимаете структуру контента. На фотоблогах или медиа-сайтах страницы вложений иногда нужны, но для обычного корпоративного сайта они почти всегда лишние.
3. Уберите индексацию страниц автора, если автор один
На сайтах с одним автором архив автора повторяет ленту записей и не даёт поиску ничего нового. В таком случае архив автора обычно закрывают от индексации, а при необходимости ещё и скрывают из карты сайта.
<?php
add_filter('wpseo_robots', function ($robots) {
if (is_author()) {
return 'noindex,follow';
}
return $robots;
});Если у вас не Yoast SEO, а другой плагин, логика та же: нужен мета-тег noindex на страницах автора. Не пытайтесь решать это через robots.txt — архив всё равно может остаться в индексе как URL без контента.
4. Для параметров и фильтров используйте canonical
Когда одна и та же страница открывается с параметрами сортировки или фильтрации, поисковику нужно явно показать основную версию. Например, /catalog/?sort=price должен ссылаться на канонический URL без параметра, если сортировка не создаёт отдельную ценность.
<?php
add_filter('wpseo_canonical', function ($canonical) {
if (!empty($_GET['sort']) || !empty($_GET['filter'])) {
return strtok($canonical, '?');
}
return $canonical;
});Это пример для Yoast SEO. Если у вас другой SEO-плагин, ищите аналогичный фильтр для canonical. Смысл один: вторичные версии должны указывать на основную страницу, а не конкурировать с ней.
Когда нужен robots.txt, а когда он вреден
robots.txt полезен для обхода, но опасен, если использовать его как замену noindex. Типичная ошибка — закрыть в robots.txt архивы тегов и потом удивляться, что они всё ещё торчат в поиске. Поисковик может видеть URL по внешним ссылкам, но не получать сигнал на удаление.
Имеет смысл ограничивать обход:
- служебных параметров, которые создают бесконечные комбинации;
- внутреннего поиска по сайту, если он генерирует мусорные URL;
- технических директорий, не предназначенных для индексации;
- страниц предпросмотра и временных маршрутов, если они доступны публично.
Но не блокируйте в robots.txt то, для чего вам нужен noindex и корректный переобход. Иначе поисковик не увидит мета-тег и не поймёт, что страницу надо убрать.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте проблемный URL и проверьте исходный код страницы.
- Убедитесь, что на дубле стоит
noindexили корректныйcanonical. - Проверьте, что основная версия страницы не закрыта случайно.
- В Search Console отправьте переобход для нескольких URL и посмотрите, как меняется статус.
- Сравните карту сайта: в ней не должно быть страниц, которые вы закрыли от индексации.
Если используете командную строку, можно быстро проверить заголовки и canonical через curl:
curl -I https://example.com/author/admin/
curl -s https://example.com/some-page/ | grep -i canonicalДля страниц с noindex важно проверить именно HTML-ответ, а не только HTTP-заголовки. Иногда плагин ставит мета-тег, но тема подменяет шаблон и ломает логику.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но не поставили noindex
Это самая частая ошибка. URL остаётся в индексе, потому что поисковик не получает явного сигнала на удаление. Исправление: уберите запрет на обход, дайте странице один раз переобойтись и поставьте noindex.
Сломали canonical на всех страницах
Иногда разработчики делают каноникал на главную для всего сайта. Это грубая ошибка: поисковик теряет различие между страницами. Canonical должен указывать на эквивалентную или основную версию, а не на случайный URL.
Закрыли полезные архивы
Если рубрика или тег реально собирают тематический кластер и дают уникальный контент, закрывать их не стоит. В таком случае лучше улучшить сам архив: добавить описание, убрать пустые блоки, настроить пагинацию и внутренние ссылки.
Не учли страницы вложений и медиа
На многих сайтах именно они создают лишний шум. Если изображения индексируются отдельно, а сами страницы пустые, это почти всегда лишний слой дублей. Решение — редирект на родительскую запись или отключение страниц вложений на уровне SEO-плагина.
Практические советы по безопасности и производительности
Чем меньше лишних URL генерирует сайт, тем проще и безопаснее его обслуживать. Это не только про SEO. Меньше дублей — меньше нагрузки на обход, меньше мусора в логах, меньше шансов, что какой-то плагин начнёт плодить бесконечные комбинации параметров.
- не ставьте одновременно несколько SEO-плагинов с пересекающимися функциями;
- проверяйте, не создаёт ли тема отдельные шаблоны архивов без нужды;
- не открывайте в индексацию внутренний поиск и страницы с параметрами сортировки без необходимости;
- после обновления плагинов повторно проверяйте canonical и robots-метки;
- если используете кеш, очищайте его после изменения правил индексации, иначе будете смотреть на старую версию HTML.
Если нужно быстро навести порядок в дублях, удобно сначала собрать техническую базу: закрыть мусорные архивы, убрать страницы вложений, проверить canonical и только потом уже заниматься контентом. В ряде случаев помогает и специализированная чистка SEO-следов, например через Clearfy Pro, если у вас много лишних архивов, дублей и служебных страниц. Но даже с плагином всё равно стоит понимать, какие URL вы закрываете и зачем.
Главный критерий простой: после правок в индексе должны остаться только те страницы, которые реально нужны пользователю и могут конкурировать в поиске. Всё остальное — либо noindex, либо canonical, либо редирект, либо блокировка обхода там, где это действительно оправдано.