Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры в URL, версии для печати, результаты поиска по сайту. В итоге поисковик видит несколько адресов с одинаковым или почти одинаковым контентом и выбирает не тот URL, который вы хотели бы продвигать.
Самый рабочий подход здесь — не пытаться «запретить всё подряд», а аккуратно разделить страницы на две группы: те, которые должны индексироваться, и те, которые нужны пользователю, но не должны конкурировать в поиске. Для этого обычно хватает canonical и noindex, но применять их нужно точечно.
Как понять, что у вас именно проблема дублей
Сначала проверьте не симптомы, а источники. Если в поиске всплывают одинаковые страницы с разными адресами, это уже повод смотреть на каноникал и мета-robots. В WordPress дубли чаще всего создают:
- архивы категорий и тегов с одинаковыми сниппетами;
- страницы автора на сайтах с одним редактором;
- страницы пагинации архивов;
- URL с параметрами вроде
?utm_,?replytocom=,?sort=; - внутренний поиск по сайту;
- служебные страницы, которые не несут самостоятельной ценности.
Быстрая диагностика в Search Console и в браузере
Откройте несколько подозрительных URL и сравните исходный код. Вам нужно увидеть две вещи: какой адрес указан в rel="canonical" и есть ли noindex в мета-тегах. Если canonical указывает на другой URL, а страница всё равно индексируется, значит проблема не решена полностью.
Полезно проверить и HTTP-ответ, особенно если у вас кэш или SEO-плагин. Иногда canonical в HTML есть, но кэш отдаёт старую версию страницы.
curl -I https://example.com/page/?utm_source=testЕсли страница с параметром открывается как отдельный адрес и не редиректится на чистый URL, это уже кандидат на каноникал или редирект, в зависимости от сценария.
Что закрывать через noindex, а что оставлять с canonical
Здесь важно не перепутать задачи. canonical помогает поисковику выбрать основную версию страницы среди похожих. noindex говорит, что страницу не нужно держать в индексе. Это не одно и то же.
| Сценарий | Что делать | Почему |
|---|---|---|
| Пагинация архивов | Обычно canonical на саму страницу пагинации, без noindex | Страницы нужны для обхода и навигации |
| Внутренний поиск | noindex, follow | Контент не уникален и зависит от запроса |
| Страницы автора на блоге с одним автором | noindex или отключение архива автора | Часто дублируют архивы записей |
| URL с UTM и служебными параметрами | canonical на чистый URL, иногда редирект | Не плодить копии одной страницы |
Если у вас SEO-плагин уже умеет управлять мета-тегами, не дублируйте его настройками в теме. Два источника canonical на одной странице — частая причина хаоса.
Пошаговое решение без лишнего риска
1. Закройте внутренний поиск и служебные страницы
Для страниц поиска и похожих технических адресов лучше ставить noindex, follow. Это безопаснее, чем запрещать всё в robots.txt, потому что поисковик всё равно может увидеть URL по ссылкам и понять, что он служебный.
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Если у вас уже стоит SEO-плагин, проверьте, не делает ли он это автоматически. Вручную добавлять такой код имеет смысл только тогда, когда плагин не покрывает ваш сценарий или вы сознательно не используете тяжёлый SEO-стек.
2. Уберите дубли от параметров URL через canonical
Если одна и та же статья открывается с параметрами, canonical должен указывать на чистый адрес без параметров. Это особенно полезно для UTM-меток, сортировки и некоторых AJAX-сценариев.
add_filter('wpseo_canonical', function ($canonical) {
if (is_singular()) {
return get_permalink();
}
return $canonical;
});Этот пример относится к Yoast SEO. Если у вас другой SEO-плагин, используйте его штатный фильтр или настройку. Не пытайтесь одновременно переопределять canonical в теме и в плагине.
3. Отключите архивы, которые не нужны сайту
На небольших сайтах часто нет смысла держать архивы автора, если автор один. То же касается некоторых таксономий, которые дублируют структуру рубрик. В таких случаях лучше либо закрыть архив от индексации, либо отключить его вывод в шаблоне и оставить только нужные разделы.
add_action('init', function () {
if (get_option('users_can_register') === '0') {
// Пример логики: архив автора можно закрывать на сайтах с одним автором.
}
});Здесь важнее не сам код, а логика: не плодите архивы ради «полноты». Если раздел не приносит трафик и дублирует контент, он должен быть либо полезным, либо закрытым.
4. Проверьте пагинацию
Пагинация — не дубль по умолчанию. Ошибка возникает, когда все страницы архива канонизируются на первую страницу или получают одинаковый title и description. Тогда поисковик начинает путаться, а пользователи — попадать не туда.
Проверьте, что у страниц /page/2/, /page/3/ и так далее есть собственный URL и корректный canonical. Если SEO-плагин подменяет canonical на первую страницу архива, это надо исправлять настройкой, а не костылём в шаблоне.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Откройте несколько адресов и убедитесь, что:
- у служебных страниц есть
noindex; - у дублей canonical указывает на основную версию;
- страницы с параметрами не создают отдельные индексируемые копии;
- в исходном коде нет двух разных canonical;
- кэш не отдаёт старую версию мета-тегов.
Для быстрой проверки удобно смотреть исходник страницы и ответ сервера. Если вы меняли код в теме, очистите кэш плагина, серверный кэш и CDN, иначе будете проверять старую разметку.
curl -s https://example.com/search/?s=test | grep -iE 'robots|canonical'В Search Console изменения обычно видны не мгновенно. Но если canonical и robots настроены правильно, новые обходы начинают учитывать это довольно быстро. Главное — не менять правила каждую неделю.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это самая вредная ошибка. Если закрыть от индексации рубрики, записи или полезные архивы, сайт может потерять нормальную структуру. Закрывайте только то, что не должно ранжироваться само по себе.
Оставляют конфликтующие настройки в плагине и теме
Например, SEO-плагин выводит canonical, а тема добавляет свой. В результате в HTML появляется несколько версий одного и того же тега. Нужно оставить один источник правды.
Путают canonical и редирект
Canonical не заменяет редирект. Если у вас реально есть две разные страницы, и одна должна исчезнуть, лучше сделать 301-редирект. Canonical подходит для похожих или технически дублирующих URL, а не для полноценной миграции адресов.
Закрывают параметры в robots.txt
Это не решает проблему дублей полностью. Robots.txt запрещает обход, но не гарантирует удаление URL из индекса. Для параметров чаще нужен canonical или редирект, а для служебных страниц — noindex.
Что делать, если нужен более управляемый подход
Если на сайте много дублей из-за таксономий, архивов и технических страниц, удобнее собрать правила в одном месте. В таких проектах обычно помогает либо SEO-плагин с тонкой настройкой индексации, либо аккуратный код в дочерней теме или мини-плагине. Для чистки дублей и технических страниц можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно стоит понимать, какие именно URL вы закрываете и зачем.
Практический чек-лист перед публикацией
- Проверить, какие URL реально дублируют контент.
- Определить, что закрывается через
noindex, а что через canonical. - Убедиться, что SEO-плагин и тема не выводят одинаковые теги.
- Очистить кэш сайта и CDN.
- Проверить исходный код нескольких страниц вручную.
- Сравнить поведение в Search Console после повторного обхода.
Если подходить к дублям как к набору конкретных сценариев, а не как к «проблеме SEO вообще», WordPress становится предсказуемым. В большинстве случаев достаточно убрать конфликтующие правила, оставить одну каноническую версию и не закрывать от индексации то, что реально нужно пользователю.