Дубли в WordPress редко выглядят как одна очевидная ошибка. Чаще это набор мелких совпадений: одна и та же запись доступна по нескольким адресам, архивы повторяют контент, параметры в URL создают новые версии страниц, а служебные страницы попадают в индекс. В итоге поисковик тратит краулинговый бюджет не туда, а в отчётах появляются URL, которые вы не планировали продвигать.
Если задача не в том, чтобы «закрыть всё подряд», а в том, чтобы оставить в индексе нужные страницы и убрать мусор без поломки сайта, сначала нужно понять источник дублей. Только после этого имеет смысл править canonical, noindex, редиректы и настройки темы.
Диагностика: откуда в WordPress берутся дубли
Самая частая ошибка — начинать с массового закрытия страниц. Это опасно: можно случайно убрать из индекса полезные архивы, пагинацию или страницы с фильтрами, которые реально приводят трафик. Сначала проверьте, какие типы дублей есть именно у вас.
Что смотреть в первую очередь
- одна запись открывается с
/post-name/и через архив рубрики; - доступны версии с
?replytocom=,?utm_,?ampили другими параметрами; - страницы автора, даты, теги и поисковая выдача по сайту индексируются без необходимости;
- архивы пагинации повторяют заголовки и описания;
- главная страница и статическая страница «Блог» дублируют блоки контента;
- HTTP и HTTPS, www и без www, со слешем и без слеша отдают разные версии.
Проверять удобнее не только руками, но и через инструменты индексации: отчёт по страницам в Google Search Console, выгрузку краулинга из Screaming Frog или аналогичного сканера, а также просмотр исходного кода страницы на наличие <link rel="canonical">.
Быстрая проверка в браузере и в коде
<?php
// Вывести canonical для текущей страницы, если тема его не показывает явно.
add_action('wp_head', function () {
if (is_singular()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
}, 1);Этот пример не нужен, если SEO-плагин уже выводит canonical корректно. Но он полезен как диагностический ориентир: если на странице вообще нет canonical, это уже повод искать проблему в теме или плагинах.
Пошаговое решение: что исправлять и в каком порядке
Ниже порядок, который обычно даёт предсказуемый результат и не ломает индексацию. Не пытайтесь закрыть всё одним фильтром: у каждого типа дубля свой способ обработки.
1. Нормализуйте основные версии URL
Сначала убедитесь, что сайт отдаёт одну каноническую версию домена и протокола. Это базовая проверка, без которой дальнейшая чистка теряет смысл. На уровне сервера или хостинга должен быть один вариант: HTTPS, один формат www или без www, один стиль слеша в конце.
Если редиректы уже настроены, проверьте, что они не создают цепочки и не ведут на 302 там, где нужен 301.
2. Уберите служебные страницы из индекса
В WordPress обычно не нужны в индексе страницы поиска по сайту, архивы дат, служебные результаты и часть таксономий. Это можно сделать через SEO-плагин или кодом, если вы контролируете тему и не хотите тащить лишнюю зависимость.
<?php
// Закрываем от индексации внутренний поиск и архивы дат.
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_date()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Этот вариант работает через стандартный фильтр wp_robots, который поддерживается ядром WordPress. Он не удаляет страницу, а только подсказывает поисковику не индексировать её.
3. Настройте canonical для архивов и пагинации
Если у вас есть рубрики, теги или архивы авторов, canonical должен указывать на саму страницу архива, а не на первую запись внутри него. Для пагинации важно не подменять canonical на главную страницу архива, иначе поисковик начнёт путаться в последовательности страниц.
Если SEO-плагин уже делает это правильно, не дублируйте логику в теме. Двойной canonical — частая причина конфликтов.
4. Закройте параметры, которые плодят дубли
Параметры в URL часто появляются из-за шаринга, комментариев, фильтров или аналитики. Не все параметры нужно запрещать: часть из них технически полезна. Но если параметр не влияет на содержимое страницы, а только меняет адрес, его лучше не индексировать.
<?php
add_filter('wp_robots', function (array $robots) {
if (!empty($_GET['replytocom']) || !empty($_GET['utm_source']) || !empty($_GET['utm_medium'])) {
$robots['noindex'] = true;
}
return $robots;
});Важно: это не замена серверным редиректам и не универсальное решение для всех параметров. Если параметр меняет контент, сначала оцените, нужен ли он в поиске вообще.
5. Проверьте архивы тегов и пустые таксономии
Теги в WordPress часто создают тонкие страницы с повторяющимся контентом. Если тегов много, а записей в них мало, такие архивы почти всегда выглядят как дубли или слабые страницы. Здесь есть два варианта: либо закрыть от индексации, либо пересмотреть структуру таксономий и оставить только реально полезные.
Для небольших проектов обычно достаточно закрыть теги от индексации в SEO-плагине. Для контентных сайтов лучше сначала посмотреть, какие теги дают трафик, а какие просто размножают архивы.
Сравнение подходов: плагин, код или сервер
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, теги, пагинацию | Меньше ручного кода, проще поддержка | Может быть лишняя функциональность и конфликт настроек |
| Код в теме или mu-plugin | Нужна точечная логика под конкретный сайт | Полный контроль | Нужно аккуратно тестировать после обновлений |
| Редиректы на сервере | Нужно склеить версии URL и убрать технические дубли | Быстро и надёжно на уровне ответа сервера | Ошибки в правилах могут сломать доступ к страницам |
Если у вас уже стоит SEO-плагин, не дублируйте его настройки кодом без необходимости. Например, если canonical и noindex уже управляются плагином, лучше оставить код только для нестандартных случаев.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит именно ту версию, которую вы задумали.
Чек-лист проверки
- открывается один канонический URL без цепочки редиректов;
- в исходном коде есть один корректный
canonical; - служебные страницы отдают
noindex, если это было задумано; - внутренний поиск и параметры не создают новые индексируемые URL;
- в Search Console уменьшается число дублей и «альтернативных страниц»;
- краулер не находит одинаковые title и description на разных URL без причины.
Для ручной проверки удобно открыть страницу в режиме просмотра исходника и найти:
<link rel="canonical" href="https://example.com/category/news/" />
<meta name="robots" content="noindex,follow" />Если у вас используется SEO-плагин, проверьте ещё и его настройки на уровне конкретной таксономии или типа записи. Иногда глобальная настройка включена, но на отдельной рубрике стоит исключение.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Так делают, когда видят много дублей и хотят «почистить сайт быстро». В результате из индекса исчезают полезные архивы и посадочные страницы. Исправление простое: разделите страницы на группы и для каждой выберите свой режим — индексировать, закрыть, склеить через canonical или редиректить.
Отключают архивы без анализа
Если рубрики или теги дают трафик, их нельзя закрывать вслепую. Сначала посмотрите статистику переходов и запросов. Иногда достаточно убрать пустые архивы и тонкие теги, а не трогать всю таксономию.
Дублируют логику SEO-плагина в теме
Когда canonical и robots выводятся и плагином, и темой, поисковик может получить противоречивые сигналы. В таких случаях оставьте один источник правды. Если плагин уже управляет мета-тегами, код в теме лучше удалить.
Не проверяют пагинацию
Пагинация архивов часто ломается после редизайна или смены темы. Если страницы 2, 3, 4 становятся копиями первой страницы без уникальных URL и заголовков, это уже проблема. Проверьте, что каждая страница пагинации доступна по своему адресу и не редиректится на первую.
Безопасность и производительность: что важно не забыть
Чистка дублей не должна превращаться в хаотичную правку шаблонов. Если вы вносите код, лучше вынести его в mu-plugin или отдельный мини-плагин, а не править напрямую файл темы. Так изменения не потеряются после обновления.
Ещё один практический момент: не ставьте тяжёлые условия в wp_head без необходимости. Проверки должны быть короткими и предсказуемыми. Если логика сложная, лучше вычислять её один раз и хранить в отдельной функции.
Для сайтов, где много технических дублей и служебных страниц, иногда удобнее использовать специализированный набор оптимизаций. В экосистеме WPShop для таких задач подходит Clearfy Pro, если вам нужно централизованно управлять дублями, чисткой и SEO-настройками без разрастания кода. Но даже в этом случае полезно понимать, какие именно URL вы закрываете и почему.
Если после правок дубли остаются, не ищите одну «волшебную кнопку». Обычно проблема сидит в сочетании темы, SEO-плагина, параметров URL и структуры контента. Когда вы разложите сайт по типам страниц, решение становится заметно проще и безопаснее.