Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры сортировки, версии с ?replytocom, служебные страницы плагинов. Если это не контролировать, поисковик тратит обход на мусорные URL, а в индексе начинают жить страницы, которые не должны конкурировать с основными.
Ниже — рабочая схема, которая помогает сначала найти источник дублей, а потом закрыть их без лишнего риска для важных страниц.
Как понять, что у вас именно проблема дублей
Симптомы обычно видны в Search Console и в логах обхода. Если в отчёте по страницам много URL с одинаковым заголовком, а в индексе всплывают архивы, пагинация или параметры, это не случайность. Ещё один признак — когда поисковик показывает не ту страницу, которую вы считаете основной: например, вместо записи ранжируется тег-архив или страница с параметром.
Что проверить в первую очередь
- страницы тегов и рубрик;
- архивы автора и дат;
- страницы пагинации архивов;
- URL с параметрами
?replytocom,?utm_*,?sort=и похожими; - страницы поиска по сайту;
- медиа-вложения, если они открыты как отдельные страницы;
- дубли из-за http/https, www/без www и слэша на конце.
Если сайт настраивался давно, отдельно проверьте, не создаёт ли тема или плагин собственные архивы, фильтры и страницы с одинаковым контентом. Часто проблема не в ядре WordPress, а в шаблоне или SEO-плагине.
Диагностика: где искать дубли в WordPress
Начинать лучше не с правок, а с карты источников. Это экономит время: вы не будете закрывать от индексации всё подряд и потом разбираться, почему просели полезные страницы.
Проверка через Search Console и сайт
Откройте отчёт по индексированию и посмотрите, какие URL попадают в индекс помимо записей и страниц. Затем вручную проверьте типовые адреса:
/tag/slug//author/username//page/2//?replytocom=123/?sort=popularЕсли на этих адресах отображается почти тот же контент, что и на основной странице, это кандидат на закрытие от индексации или на каноникал.
Проверка заголовков и каноникала
Откройте исходный код страницы и найдите <link rel="canonical">. У нормальной записи канонический URL должен указывать на саму запись, а не на архив, параметр или страницу пагинации. Если canonical отсутствует или подставляется странно, сначала исправляйте это, а уже потом закрывайте URL от индексации.
Пошаговое решение: что закрывать, а что оставлять
Универсального набора нет, но для большинства сайтов рабочая логика такая: полезные страницы оставляем открытыми, служебные и повторяющиеся — закрываем или переводим в noindex. Важно не путать индексацию с обходом: иногда страницу нужно оставить доступной для робота, но не пускать в индекс.
1. Закройте служебные архивы и пустые страницы
Если архивы автора не несут ценности, а на сайте один редактор, их обычно закрывают от индексации. То же касается архивов дат, если они не используются как полноценная навигация. Страницы поиска по сайту тоже не должны индексироваться: они создают бесконечный поток мусорных URL.
В SEO-плагинах это обычно настраивается без кода. Если нужен код, можно точечно добавить robots meta на типы архивов:
add_action('wp_head', function () {
if (is_author() || is_date() || is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Этот вариант годится как временная мера или для кастомной логики. Если у вас уже стоит SEO-плагин, не дублируйте мета-теги из двух мест одновременно.
2. Уберите индексацию параметров URL
Параметры сортировки, фильтрации и трекинга часто создают десятки почти одинаковых страниц. Для них обычно нужен canonical на чистый URL, а не отдельная индексируемая страница.
Если параметр нужен только для интерфейса, а контент не меняется существенно, можно принудительно ставить canonical на базовый адрес:
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_singular() && !empty($_GET['utm_source'])) {
return get_permalink($post);
}
return $canonical;
}, 10, 2);Это не универсальное решение для всех случаев, но для страниц с маркетинговыми параметрами работает предсказуемо. Для фильтров каталога и сложной навигации лучше отдельно продумать, какие комбинации должны индексироваться, а какие нет.
3. Отключите страницы вложений, если они не нужны
Медиа-вложения в WordPress часто создают отдельные страницы без ценности. Если по ним нет трафика и они не используются как посадочные, их лучше редиректить на сам файл или на родительскую запись.
Простой вариант через код:
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;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Если у вас много изображений в поиске, сначала проверьте, не сломает ли это текущие входящие ссылки. Для старых сайтов иногда безопаснее оставить страницу вложения, но закрыть её от индексации.
4. Настройте пагинацию и архивы
Пагинация сама по себе не всегда проблема. Но если страницы /page/2/, /page/3/ и дальше не несут самостоятельной ценности, их часто закрывают от индексации, оставляя доступными для обхода. Это помогает не плодить слабые страницы в выдаче.
Важный момент: не ставьте noindex на всё подряд в архиве, если у вас крупный контентный сайт и пагинация реально помогает находить записи. Здесь нужен баланс между индексацией и удобством навигации.
Сравнение подходов: плагин, код или robots.txt
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Стандартные архивы, теги, автора, sitemap | Быстро, без кода, удобно поддерживать | Не всегда хватает для нестандартных параметров |
| Код в теме или mu-plugin | Точечная логика, кастомные типы, особые URL | Гибко, можно учесть условия сайта | Нужна аккуратность, легко сломать canonical или редиректы |
robots.txt | Ограничение обхода служебных путей | Просто закрыть от робота лишние разделы | Не гарантирует исключение из индекса, если URL уже известен |
Если задача — именно убрать дубли из индекса, robots.txt обычно недостаточен. Для SEO-результата важнее canonical, noindex и корректные редиректы.
Проверка результата после внедрения
После правок не стоит сразу считать задачу закрытой. Сначала проверьте, как сервер и страница отвечают на запросы, потом — что видит поисковик.
Что проверить технически
- код ответа нужных страниц:
200для основных,301для редиректов; - наличие одного canonical на странице;
- отсутствие индексируемых дублей в sitemap;
- корректный
noindex,followна служебных разделах; - отсутствие циклов редиректа;
- отсутствие дублей из-за http/https и www.
Проверить заголовки можно через браузерные инструменты разработчика или через curl:
curl -I https://example.com/tag/slug/Если страница должна быть закрыта, но всё ещё попадает в индекс, отправьте её на переобход в Search Console и дождитесь обновления. Для старых URL это не мгновенный процесс.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Иногда после первой чистки закрывают и полезные страницы: рубрики, важные теги, страницы авторов с сильным контентом. В результате сайт теряет внутреннюю структуру. Исправление простое: пересмотрите список шаблонов, оставьте noindex только там, где страница не решает задачу пользователя.
Путают canonical и редирект
Canonical не убирает URL из доступа, он лишь подсказывает поисковику основную версию. Если дубль должен исчезнуть полностью, нужен 301-редирект. Если страница нужна пользователю, но не должна конкурировать в выдаче, тогда canonical или noindex.
Закрывают в robots.txt и ждут удаления из индекса
Если URL уже в индексе, запрет в robots.txt не всегда решает проблему. Поисковик может перестать обходить страницу, но не обязан быстро удалить её из выдачи. Для удаления нужен доступ к странице и сигнал noindex или редирект.
Ломают пагинацию
Когда на страницах архива отключают индексацию без проверки, можно случайно ухудшить обход новых записей. Перед изменениями посмотрите, как именно у вас строится навигация и есть ли важные ссылки на страницах 2, 3, 4 и дальше.
Практические советы по безопасности и производительности
Чистка дублей полезна не только для SEO. Чем меньше мусорных URL, тем меньше лишних запросов к серверу и тем проще поддерживать сайт. Но любые массовые изменения лучше делать через staging-копию или хотя бы с резервной копией базы и файлов.
- не правьте
functions.phpна живом сайте без бэкапа; - если используете SEO-плагин, проверьте, не дублирует ли код его настройки;
- после редиректов очистите кеш страницы и объектный кеш, если он есть;
- не закрывайте от индексации URL, которые дают входящий трафик или содержат полезный контент;
- проверяйте sitemap после каждой крупной правки.
Если хочется меньше ручной работы, часть задач по чистке дублей и SEO-настройкам можно закрыть через Clearfy Pro: у него есть инструменты для отключения лишних архивов, дублей и служебных элементов. Но даже с плагином всё равно стоит понимать, какие URL вы закрываете и почему: автоматическая кнопка не заменяет проверку структуры сайта.
Хороший критерий простой: если после изменений в индексе остаются только те страницы, которые реально нужны пользователю и могут конкурировать в поиске, значит настройка сработала. Если же в выдаче продолжают всплывать архивы, параметры и пустые служебные страницы, проблема ещё не закрыта — и искать её нужно не в одном месте, а по всей цепочке генерации URL.