Технические дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких вещей: пагинация архивов, параметры в URL, страницы поиска, теги, сортировки, UTM-метки, а иногда и одинаковые записи в нескольких архивах. В результате поисковик видит несколько адресов с почти одинаковым содержимым и начинает тратить обход на мусорные URL. На небольшом сайте это заметно по отчётам индексации, на большом — по просадке качества обхода и размыванию сигналов.
Ниже — рабочая схема: как сначала найти источник дублей, потом закрыть их без лишнего риска, и как проверить, что вы не сломали полезные страницы.
Диагностика: какие дубли реально мешают
Не все похожие URL нужно закрывать. Сначала отделите технические дубли от нормальных страниц. Например, /category/news/ и /category/news/page/2/ — это не дубль в плохом смысле, а часть пагинации. А вот URL с параметрами сортировки, фильтрами или метками кампаний часто создают десятки почти одинаковых страниц.
Что проверить в первую очередь
- страницы поиска вида
/?s=...; - архивы тегов и авторов, если они не несут самостоятельной ценности;
- параметры
?utm_*,?replytocom=,?sort=,?filter=; - пагинацию архивов и рубрик;
- страницы вложений медиафайлов;
- дубли главной через
/page/2/, если они индексируются без необходимости.
Если у вас есть доступ к Search Console, посмотрите отчёт по страницам и исключённым URL. Если нет — хотя бы выгрузите список адресов из краулера вроде Screaming Frog или Sitebulb и сравните заголовки, canonical и статус-коды.
Признаки, что проблема именно в дублях
- в индексе есть несколько URL с одинаковым title и description;
- поисковик показывает не ту версию страницы, которую вы считаете основной;
- в логах обхода много запросов с параметрами;
- внутренние ссылки ведут на разные варианты одного и того же контента;
- страницы с фильтрами или сортировкой получают каноникал на самих себя, хотя должны быть закрыты.
Пошаговое решение: что закрывать, а что оставлять
Универсального правила нет, но для большинства сайтов работает такой подход: полезные страницы оставляем в индексе, технические и мусорные — закрываем через noindex, canonical или robots.txt в зависимости от сценария. Важно не мешать эти инструменты в одну кучу.
1. Закройте страницы поиска и служебные URL
Страницы внутреннего поиска почти всегда не нужны в индексе. То же касается страниц вложений медиафайлов, если они не используются как самостоятельные посадочные.
<?php
add_action('wp_head', function () {
if (is_search() || is_attachment()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
Это простой вариант, если вы контролируете тему. Если используете SEO-плагин, лучше настроить это в нём, чтобы не плодить конфликтующие мета-теги.
2. Уберите индексацию параметров, которые не меняют смысл страницы
UTM-метки, replytocom и похожие параметры не должны создавать отдельные страницы для поисковика. Здесь лучше не полагаться только на robots.txt: он не решает проблему канонизации, а лишь ограничивает обход. Если параметр не нужен для SEO, правильнее отдавать канонический URL без него.
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_string($canonical)) {
$canonical = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'replytocom'), $canonical);
}
return $canonical;
}, 10, 2);
Этот фильтр полезен, когда canonical формируется с параметрами из текущего запроса. Но не стоит использовать его как универсальную «чистку всего» — если страница реально зависит от параметра, вы можете сломать логику.
3. Для пагинации не ставьте blanket noindex без проверки
Пагинация архивов — спорная зона. Если у вас сильные рубрики и нормальная перелинковка, страницы /page/2/, /page/3/ могут быть полезны для обхода и распределения веса. Если же это тонкие архивы с повторяющимся контентом, их можно закрывать от индексации. Но делать это нужно осознанно, а не по принципу «всё кроме главной noindex».
Практический ориентир: если на странице пагинации есть уникальные записи и она помогает добраться до старого контента, оставьте её доступной. Если это пустой архив с несколькими повторяющимися карточками, лучше закрыть.
4. Настройте canonical на основную версию страницы
Canonical нужен там, где есть несколько адресов с одним смыслом. Это особенно важно для архивов с сортировками и фильтрами. Если у вас есть страница каталога или подборки, а параметры меняют только порядок вывода, canonical должен указывать на чистый URL без параметров.
<?php
add_filter('wpseo_canonical', function ($canonical) {
if (!is_string($canonical)) {
return $canonical;
}
return remove_query_arg(array('sort', 'filter', 'utm_source', 'utm_medium', 'utm_campaign'), $canonical);
});
Если у вас не Yoast SEO, аналогичная логика обычно есть и в других SEO-плагинах. Смысл один: не давайте параметрам создавать отдельные канонические сущности.
Когда лучше использовать robots.txt, а когда noindex
Это частая точка путаницы. robots.txt полезен для экономии обхода, но не гарантирует исключение из индекса, если URL уже известен поисковику. noindex — это явный сигнал не индексировать страницу, но он работает только если робот может её обойти и увидеть мета-тег.
| Подход | Когда применять | Ограничение |
|---|---|---|
noindex,follow | поиск, служебные страницы, тонкие архивы | нужно, чтобы робот мог зайти на страницу |
robots.txt | параметры и разделы, которые не нужно обходить | не удаляет уже известные URL из индекса сам по себе |
| canonical | дубли с разными параметрами или путями | не всегда срабатывает как жёсткий запрет |
На практике часто нужен не один инструмент, а связка: canonical для дублей, noindex для бесполезных страниц, robots.txt — для снижения шума в обходе.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Откройте несколько типовых URL и посмотрите исходный код страницы: canonical должен вести на чистый адрес, а robots-мета — соответствовать задаче. Затем проверьте, как сервер отвечает на проблемные варианты URL с параметрами.
Минимальный чек-лист проверки
- основная страница отдаёт
200 OKи правильный canonical; - страницы поиска и вложений получают
noindex,followили закрыты на уровне SEO-плагина; - URL с UTM-метками не создают отдельный canonical;
- пагинация не дублирует title и description без необходимости;
- в Search Console уменьшается число странных URL с параметрами;
- краулер не находит одинаковые title на разных адресах.
Если используете командную строку на сервере, можно быстро проверить заголовки и canonical через curl:
curl -I https://example.com/?utm_source=test
curl -s https://example.com/ | grep -i canonical
Для более точной проверки удобно сравнить HTML двух адресов: чистого и с параметром. Если содержимое одинаковое, а canonical указывает на разные URL, это повод пересмотреть настройку.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это ломает видимость нормальных архивов и пагинации. Исправление простое: разделите страницы по смыслу. Поиск и служебные URL — noindex, полезные архивы — по ситуации, а не по шаблону.
Закрывают параметры в robots.txt и считают задачу решённой
Если URL уже в индексе, одного запрета на обход мало. Нужен canonical, редирект или noindex в зависимости от типа страницы.
Оставляют несколько SEO-плагинов с конфликтующими правилами
Когда один плагин ставит canonical, а другой добавляет свой robots-мета, результат становится непредсказуемым. Оставьте один источник правды для мета-тегов и canonical.
Редиректят все параметры на главную
Это грубая ошибка. Если параметр относится к конкретной странице, редирект должен вести на её чистую версию, а не на главную. Иначе вы теряете релевантность и создаёте цепочки редиректов.
Практические советы по безопасности и производительности
Чистка дублей полезна не только для SEO. Чем меньше мусорных URL, тем меньше бесполезных запросов к серверу и тем проще поддерживать сайт. Но не пытайтесь «лечить» проблему на уровне плагина, если источник дублей — тема или кастомный код.
- проверьте, не генерирует ли тема лишние архивы авторов, тегов или вложений;
- не открывайте в индексацию страницы с внутренним поиском и параметрами сортировки;
- если используете фильтры, убедитесь, что они не плодят бесконечные комбинации URL;
- не закрывайте важные страницы через
robots.txt, если вам нуженnoindex; - после изменений очистите кеш страницы и объектный кеш, если он есть.
Если нужен более прикладной способ навести порядок в дублях и служебных настройках без ручной правки кода, можно посмотреть на Clearfy Pro как на инструмент для части типовых SEO-задач: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала стоит понять, какие именно URL у вас создают дубли, а уже потом включать автоматические правила.
Самый надёжный сценарий — не «запретить всё лишнее», а точно определить тип страницы и применить к ней один понятный механизм: canonical, noindex или редирект. Тогда индексация становится предсказуемой, а сайт не теряет полезные страницы из-за слишком агрессивной чистки.