Если в индексе появляются одинаковые или почти одинаковые страницы, WordPress обычно не «ломается» сам по себе — дубли создают архивы, теги, пагинация, параметры URL и иногда шаблон темы. Проблема в том, что поисковик видит несколько адресов с одним и тем же или очень похожим содержимым и начинает выбирать канонический URL не так, как вы ожидаете.
Ниже — рабочая схема: сначала находим источник дублей, потом решаем, что закрывать от индексации, что склеивать через rel=canonical, а что оставлять как отдельную страницу. Без лишней магии и без попытки «починить SEO» одной галочкой в плагине.
Как понять, что у вас именно проблема дублей
Симптомы обычно видны в Search Console и в логике самих URL. Часто в индексе всплывают:
- страницы категорий и тегов с одинаковыми списками записей;
- архивы автора и даты, которые дублируют основной контент сайта;
- страницы пагинации вида
/page/2/,/page/3/; - URL с параметрами сортировки, UTM и фильтрами;
- версии с
wwwи без, http и https, со слешем и без слеша — если редиректы настроены криво; - страницы вложений медиафайлов, которые повторяют заголовок и описание изображения.
Проверка начинается не с плагина, а с поиска повторов в индексе. В Search Console откройте отчёт по страницам и посмотрите, какие URL помечены как дубликат, Google выбрал другой канонический URL. Если таких страниц много, почти всегда есть системная причина, а не единичная ошибка.
Быстрая диагностика в браузере и через код
Откройте проблемную страницу и проверьте исходный код. На странице должен быть один явный canonical, а не несколько конфликтующих вариантов. Для WordPress это особенно важно, если тема или SEO-плагин добавляют свои теги поверх ядра.
<link rel="canonical" href="https://example.com/category/news/" />Дальше проверьте, не создаёт ли тема лишние архивы или дубли в шаблонах. Например, если в header.php или через хук выводится собственный canonical, а SEO-плагин уже делает это автоматически, поисковик может получить конфликтующие сигналы.
Что закрывать, а что склеивать
Не все дубли нужно удалять из индекса. Иногда правильнее оставить страницу, но указать поисковику основную версию. Логика простая:
- склеивать через canonical — если страницы нужны пользователю, но содержат почти одинаковый контент;
- закрывать через noindex — если страница не несёт поисковой ценности;
- редиректить 301 — если есть явный устаревший или ошибочный адрес;
- оставлять в индексе — если страница реально уникальна и полезна.
| Подход | Когда использовать | Компромисс |
|---|---|---|
| canonical | Похожие страницы, фильтры, параметры | Страница остаётся доступной, но не всегда ранжируется сама |
| noindex | Архивы, служебные страницы, тонкий контент | Страница может оставаться в обходе, но не в индексе |
| 301 redirect | Старые URL, дубли со слешем/без, переезды | Нужен контроль цепочек редиректов |
Пошаговое решение для WordPress
1. Уберите конфликтующие canonical
Если canonical выводится и ядром, и темой, и плагином, оставьте один источник. В большинстве случаев достаточно SEO-плагина или стандартного механизма WordPress. Если в теме есть ручной вывод, его лучше удалить.
Пример: если вы добавляете собственный canonical для записей, делайте это только там, где действительно нужно переопределение.
<?php
add_action('wp_head', function () {
if (is_singular('post')) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
}, 1);Но если SEO-плагин уже управляет canonical, этот код не нужен. Дублирующий вывод — частая причина путаницы.
2. Закройте служебные архивы от индексации
Архивы автора, даты и вложений часто не дают поисковику ничего полезного, особенно на небольшом сайте. Их можно закрыть через SEO-плагин или кодом. Если нужен точечный контроль, используйте фильтр wp_robots.
<?php
add_filter('wp_robots', function ($robots) {
if (is_author() || is_date() || is_attachment()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не ломает шаблон и работает на уровне мета-роботов. Для вложений часто дополнительно имеет смысл сделать 301-редирект на файл или на родительскую запись, если страница вложения вообще не нужна.
3. Приведите пагинацию к нормальной логике
Пагинация сама по себе не проблема. Ошибка начинается, когда страницы /page/2/ индексируются как самостоятельные посадочные и конкурируют с первой страницей архива. Для архивов обычно оставляют canonical на саму пагинированную страницу, а не на первую страницу списка. Это нормальная практика: у каждой страницы пагинации свой URL и свой набор записей.
Проблема возникает, если тема подменяет canonical на первую страницу или если в пагинации есть дубли из-за параметров. Проверьте, что ссылки в навигации формируются стандартно, без лишних query string.
4. Уберите дубли от параметров URL
Если на сайте есть сортировка, фильтры, метки кампаний или внутренние параметры, поисковик может индексировать десятки вариантов одной и той же страницы. Для таких URL обычно нужен canonical на чистую версию страницы, а иногда и noindex.
Если параметр не должен влиять на содержимое, не давайте ему создавать отдельный индексируемый URL. В шаблоне можно нормализовать ссылку так:
<?php
$clean_url = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'sort'), home_url(add_query_arg(array())));
echo esc_url($clean_url);Это не универсальное решение для всего сайта, но хороший пример того, как не плодить мусорные адреса в ссылках внутри темы.
Когда лучше использовать плагин, а когда код
Если задача типовая — закрыть архивы, убрать дубли мета-тегов, настроить canonical и noindex — удобнее делать это через SEO-плагин или через набор функций в одном месте. Если же проблема в теме или в кастомной логике, код даёт более точный контроль.
Ниже — практическое сравнение:
| Вариант | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстро, без правок темы | Не всегда удобно для точечных исключений |
| Код в теме/плагине | Точный контроль, меньше лишних настроек | Нужно тестировать после обновлений |
| Комбинация | Удобно для типовых правил и исключений | Важно не задублировать логику |
Если на сайте уже есть лишние архивы, дубли мета и мусорные страницы, имеет смысл посмотреть на инструменты очистки и SEO-настроек вроде Clearfy Pro: он закрывает типовые проблемы без ручного ковыряния каждого шаблона. Но даже в этом случае нужно понимать, что именно вы отключаете, иначе можно случайно закрыть полезные страницы.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужны три шага:
- Откройте несколько типовых URL: запись, категорию, тег, архив автора, страницу пагинации.
- Посмотрите исходный код и убедитесь, что canonical один и он ведёт на нужную версию.
- Проверьте заголовок ответа и robots-мета, если вы ставили noindex.
Удобно проверить заголовки через curl:
curl -I https://example.com/category/news/Ищите редиректы, статус 200 на нужной странице и отсутствие цепочек. Если страница должна быть закрыта, убедитесь, что она не отдаёт 301 на случайный адрес и не создаёт петлю.
В Search Console изменения обычно видны не сразу. Но если canonical и robots настроены правильно, новые URL начнут попадать в отчёты без хаотичных дублей, а старые варианты постепенно уйдут в статус альтернативных или исключённых.
Частые ошибки и как их исправить
- Два canonical на одной странице. Обычно это конфликт темы и SEO-плагина. Оставьте один источник, второй отключите.
- noindex на странице, которая должна ранжироваться. Часто так случайно закрывают категории или важные архивы. Проверьте шаблонные условия.
- Редирект вместо canonical там, где нужен доступ к странице. Например, фильтр или пагинация не должны всегда вести на главную категорию.
- Закрыли архивы, но оставили внутренние ссылки на них. Пользовательский путь не должен ломаться, даже если страница не индексируется.
- Параметры URL продолжают плодиться. Значит, где-то в шаблоне или в плагине генерации ссылок остался неочищенный query string.
Что проверить отдельно для безопасности и производительности
Чистка дублей полезна не только для SEO. Чем меньше мусорных URL, тем проще логика кэша и тем меньше лишних обращений к серверу. Если у вас включён page cache, дубли с параметрами могут обходить кэш и создавать лишнюю нагрузку.
Отдельно проверьте:
- не создаёт ли тема бесконечные комбинации фильтров;
- не индексируются ли страницы поиска по сайту;
- не открыты ли страницы вложений, если они не нужны;
- не дублируются ли title и description на архивных страницах;
- не генерируются ли ссылки с UTM внутри сайта.
Если хотите сократить ручную работу, часть типовых SEO- и технических правок можно вынести в один инструмент, а не держать в теме. Но базовое правило не меняется: сначала диагностика, потом точечное решение, потом проверка в коде и в индексе.