В WordPress дубли чаще всего появляются не из-за контента, а из-за самой структуры сайта: архивы авторов, рубрик, тегов, дат, страниц вложений, пагинация, параметры сортировки и служебные URL. Если оставить это без контроля, поисковик начинает тратить обход на мусорные страницы, а в индексе остаются версии, которые не должны ранжироваться.
Ниже — рабочая схема, как аккуратно закрыть такие страницы, не сломав каноникал, внутреннюю перелинковку и доступность нужных разделов.
Когда проблема уже есть: как понять, что в индексе сидят дубли
Сначала стоит не править настройки наугад, а посмотреть, какие именно URL поисковик уже видит как отдельные страницы. Обычно сигналов несколько: в Search Console растет число страниц с пометкой «Просканировано, но не проиндексировано», в выдаче находятся архивы авторов без полезного контента, а в логах обхода заметно много запросов к тегам и пагинации.
Что проверить в первую очередь
- страницы авторов, если на сайте один автор или у авторов нет уникальных биографий;
- архивы тегов, если теги дублируют рубрики;
- архивы дат, если сайт не новостной;
- страницы вложений медиафайлов;
- параметры URL, которые создают одинаковый контент в нескольких версиях;
- страницы пагинации, если они индексируются без необходимости.
Если у вас уже стоит SEO-плагин, сначала посмотрите, не закрывает ли он эти разделы автоматически. На практике часто бывает наоборот: плагин создает лишние мета-теги, но не решает проблему структуры URL.
Что закрывать, а что оставлять открытым
Не все архивы нужно прятать от индекса. Рубрики, которые реально собирают трафик и помогают навигации, лучше оставить. А вот архивы авторов на блоге с одним редактором, теги без наполнения и страницы вложений почти всегда создают шум.
| Вариант | Когда подходит | Минус |
|---|---|---|
Закрыть через noindex | Страница полезна пользователю, но не нужна в поиске | URL остается доступным для обхода |
Запретить в robots.txt | Нужно снизить обход технических разделов | Не удаляет URL из индекса, если он уже там |
Удалить раздел и отдать 410 | Страница больше не нужна вообще | Требует аккуратной проверки ссылок и редиректов |
Если задача именно в индексации, а не в экономии crawl budget, делайте ставку на noindex и каноникал. robots.txt используйте как дополнительный слой, но не как единственный способ убрать уже проиндексированные страницы.
Пошаговое решение: закрываем дубли без лишнего риска
1. Отключаем индексацию служебных архивов в SEO-плагине
Если у вас установлен плагин уровня Yoast SEO, Rank Math или аналог, начните с интерфейса. Это безопаснее, чем сразу лезть в код. Для архивов авторов и дат обычно есть отдельные переключатели. Если на сайте один автор, архив автора можно закрыть полностью. Если авторов несколько, но у каждого нет уникального контента, лучше оставить страницу профиля только как служебную и убрать ее из индекса.
Для тегов логика простая: если теговая страница не несет самостоятельной ценности, ее лучше закрыть. Если теги используются как полноценные тематические подборки, тогда сначала приведите их в порядок: добавьте описание, уникальный заголовок, нормальную структуру и только потом решайте, нужен ли noindex.
2. Добавляем noindex программно для точечных случаев
Иногда удобнее управлять индексацией кодом, особенно если нужно закрыть только часть архивов. Например, архивы авторов можно закрыть, а рубрики оставить открытыми.
<?php
add_action('wp_head', function () {
if (is_author() || is_date() || is_attachment()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот вариант рабочий, но у него есть минус: если SEO-плагин уже выводит свой robots meta, можно получить конфликт. Тогда в коде лучше не дублировать логику, а использовать фильтры конкретного плагина или отключить его настройку для этих архивов.
3. Закрываем технические разделы в robots.txt
Если нужно уменьшить количество обходов, можно запретить сканирование отдельных технических путей. Это не замена noindex, а дополнение. Для WordPress обычно имеет смысл закрыть служебные параметры и некоторые внутренние пути, но не переусердствовать: слишком агрессивный Disallow мешает поисковику увидеть каноникал и мета-теги.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?replytocom=
Disallow: /attachment/Строка с /attachment/ подходит не всем: у некоторых сайтов страницы вложений вообще не используют такой путь. Перед правкой проверьте реальные URL на своем сайте. Если структура другая, правило нужно адаптировать.
4. Убираем страницы вложений и делаем редирект на файл или запись
Страницы вложений — частый источник дублей. Пользователь открывает изображение, а WordPress создает отдельную страницу-оболочку, которая часто пустая. Если такие URL уже в индексе, лучше либо закрыть их noindex, либо сделать редирект на сам файл или на родительскую запись.
Если используете код, можно повесить редирект на шаблонный запрос вложения:
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
}
});Это лучше, чем оставлять пустые attachment-страницы. Но если на сайте есть осмысленные страницы вложений с описанием и трафиком, редирект нужно принимать отдельно, а не включать вслепую.
Проверка результата после внедрения
После изменений не ограничивайтесь тем, что «в коде все добавили». Нужно проверить, как страница отдается поисковику и что реально видит робот.
- откройте проблемный URL в браузере и проверьте исходный код страницы;
- убедитесь, что в
<head>естьnoindex,followтам, где он нужен; - проверьте HTTP-статус: для редиректа должен быть
301, для удаленной страницы —410или404; - посмотрите, не остался ли URL в карте сайта;
- в Search Console отправьте проверку URL и дождитесь повторного обхода;
- сравните количество проиндексированных архивов до и после в отчете по страницам.
Если страница закрыта, но продолжает попадать в индекс, обычно причина одна из трех: она есть в sitemap, на нее ведут внутренние ссылки, или поисковик еще не переобходил URL после изменения. В таком случае не надо менять все подряд — сначала уберите источник ссылки.
Частые ошибки и как их исправить
Закрыли в robots.txt, но страница осталась в индексе
Это нормальная ситуация. robots.txt запрещает обход, но не гарантирует удаление уже известного URL. Если цель — убрать страницу из индекса, нужен noindex или корректный редирект/код ответа.
Поставили noindex и одновременно запретили обход
Так делать можно не всегда. Если робот не может зайти на страницу, он не увидит мета-тег noindex. В результате URL может зависнуть в индексе дольше, чем ожидается. Для удаления из поиска сначала дайте роботу увидеть noindex, а уже потом при необходимости ограничивайте обход.
Закрыли все теги и рубрики без разбора
Это частая ошибка после установки SEO-плагина или после «чистки» сайта. В итоге исчезают полезные страницы, которые собирали переходы по тематике. Правильнее сначала посмотреть статистику по каждому архиву: если раздел не дает трафик и не нужен для навигации, тогда закрывать. Если дает — дорабатывайте контент, а не прячьте его.
Удалили страницу, но не поставили редирект
Если у URL были внешние ссылки или внутренние переходы, 404 без плана часто ухудшает поведение сайта. Для старых адресов лучше 301 на ближайший релевантный раздел. Для полностью ненужных страниц без замены — 410, но только если вы уверены, что адрес действительно больше не нужен.
Безопасность и производительность: что учесть до правок
Любые изменения в индексации лучше делать не прямо на боевом сайте без проверки. Минимум — бэкап файлов и базы. Если правите код в functions.php, держите изменения в дочерней теме или в небольшом mu-plugin, чтобы не потерять их после обновления темы.
Если на сайте много архивов и фильтров, полезно дополнительно проверить:
- не генерируются ли лишние URL в карте сайта;
- не создают ли плагины фильтрации бесконечное число параметров;
- не дублируются ли title и description на архивных страницах;
- не ломается ли каноникал после редиректов;
- не кешируется ли старый HTML после правок robots meta.
Если вам нужна более системная чистка дублей, служебных страниц и лишних архивов, в WordPress часто удобнее делать это через один SEO-плагин с понятными настройками, чем собирать логику из нескольких разрозненных кусков кода. Но даже в этом случае важно проверить итоговый HTML и карту сайта вручную.
Когда задача выходит за рамки точечной правки, имеет смысл смотреть в сторону инструментов, которые помогают управлять дублями и служебными страницами централизованно. Например, в Clearfy Pro есть набор настроек для чистки WordPress и отключения лишних сущностей, но применять такие инструменты стоит только после проверки, какие именно URL вы хотите оставить открытыми, а какие убрать из индекса.
Как понять, что решение сработало
Признаки нормального результата довольно приземленные: проблемные URL отдают нужный статус или мета-тег, в sitemap их больше нет, внутренние ссылки не ведут на закрытые страницы, а в Search Console постепенно уменьшается число служебных адресов в отчете по индексированию. Если этого не происходит, значит, где-то остался источник дубля: шаблон темы, плагин, меню, хлебные крошки или генератор карты сайта.
Самая надежная проверка — открыть конкретный URL, посмотреть исходный код, проверить ответ сервера и затем найти его в Search Console по точному адресу. Если все три слоя совпали, значит, вы закрыли дубли не формально, а по-настоящему.