Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, служебные URL, параметры сортировки, версии с ?replytocom и похожие адреса. На небольшом сайте это может долго не мешать, но на живом проекте поисковик начинает тратить обход на мусор, а в индексе появляются страницы, которые не должны конкурировать с основными.
Самая частая ошибка — пытаться решить всё только через robots.txt. Это не закрывает URL от индексации, если на них уже есть ссылки или они известны поисковику. Вторая крайность — ставить noindex на всё подряд и случайно убрать из поиска полезные страницы. Ниже — рабочая схема, как разделить задачи: что закрывать от обхода, что от индексации, а что оставить как есть.
Как понять, что у вас именно проблема с дублями
Сначала не трогайте настройки. Посмотрите, какие URL реально попадают в поиск и в отчёты краулинга. Если у вас есть доступ к Google Search Console, откройте отчёт по страницам и проверьте, не растут ли там:
- архивы тегов и рубрик с почти одинаковым содержимым;
- страницы автора на сайте, где автор один;
- страницы пагинации архивов;
- URL с параметрами, например
?replytocom=,?utm_,?orderby=; - страницы поиска по сайту вида
/search/или?s=; - медиавложения, если они открываются как отдельные страницы.
Если у вас установлен краулер вроде Screaming Frog, проверьте, сколько страниц отдают одинаковые title, description и почти одинаковый контент. Это хороший признак того, что поисковик видит не один документ, а набор клонов.
Что считать нормой, а что — проблемой
Не все архивы нужно закрывать. Если рубрика реально является навигационной страницей и у неё есть уникальный текст, её можно оставить в индексе. Если же рубрика или тег просто дублируют записи, лучше убрать их из поиска. То же самое с пагинацией: сама по себе она не вредна, но часто не несёт самостоятельной ценности и создаёт лишние URL.
Что закрывать через robots.txt, а что через noindex
Здесь важно не смешивать две задачи. robots.txt нужен, чтобы ограничить обход, а noindex — чтобы убрать страницу из индекса. Если URL уже в индексе, один только Disallow не гарантирует исчезновение. Поэтому для дублей обычно используют комбинацию: закрывают от обхода только технический мусор, а для страниц, которые должны быть доступны, но не индексироваться, ставят noindex.
| Подход | Когда использовать | Минус |
|---|---|---|
robots.txt | Технические URL, которые не должны обходиться | Не убирает страницу из индекса сам по себе |
noindex | Страница должна открываться, но не участвовать в поиске | Нужен доступ поисковика к странице, чтобы увидеть мета-тег |
| canonical | Похожие версии одной страницы | Это подсказка, а не жёсткий запрет |
Пошаговая настройка без лишнего риска
1. Сначала уберите мусорные URL из обхода
Если у вас есть очевидно технические адреса, их можно закрыть в robots.txt. Пример для типового сайта:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-login.php
Disallow: /*?replytocom=
Disallow: /*?s=
Disallow: /*?orderby=
Этот пример не универсален. Например, если поиск по сайту нужен для пользователей и вы хотите, чтобы поисковик индексировал результаты поиска, строку с ?s= лучше не добавлять. Для большинства проектов страницы поиска всё равно не нужны в индексе, но решение должно быть осознанным.
2. Закройте от индексации архивы, которые не несут ценности
Если вы не хотите, чтобы индексировали теги, архивы автора или служебные таксономии, делайте это через noindex. В WordPress удобнее всего управлять этим через SEO-плагин, который умеет ставить мета-тег и canonical. Если нужен код, можно добавить фильтр в тему или mu-plugin.
<?php
add_action('wp_head', function () {
if (is_tag() || is_author() || is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
Этот вариант рабочий, но его лучше использовать только если вы понимаете, как у вас устроены SEO-настройки в теме и плагинах. Если SEO-плагин уже выводит robots meta, не дублируйте тег вручную.
3. Проверьте canonical на похожих страницах
Для дублей важен не только noindex. Если у страницы есть несколько версий, canonical должен указывать на основную. Это особенно полезно для пагинации, сортировок и страниц с параметрами. В WordPress canonical обычно генерируется автоматически, но после кастомизации темы или SEO-плагина его стоит проверить вручную.
Если canonical указывает на саму страницу, а не на основную версию, поисковик может продолжать считать URL самостоятельным документом. Это не всегда ошибка, но для параметров и служебных страниц чаще всего лучше указывать канонический адрес без параметров.
Пример: убрать страницы тегов из индекса, но оставить их доступными
Если теги нужны посетителям как навигация, но не нужны в поиске, не закрывайте их через robots.txt. Лучше оставить доступ и поставить noindex,follow. Тогда поисковик сможет переходить по ссылкам внутри страницы, но сам архив не будет ранжироваться.
Вариант через фильтр для SEO-плагина зависит от конкретного плагина, поэтому безопаснее использовать готовую настройку в интерфейсе. Если же у вас кастомная тема и вы точно знаете, что делаете, можно добавить условный вывод мета-тега только для нужных архивов:
<?php
add_action('wp_head', function () {
if (is_tag()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
После этого проверьте исходный код страницы тега и убедитесь, что там нет второго robots meta от SEO-плагина с конфликтующим значением.
Как проверить, что решение сработало
Проверка нужна не только в браузере. Сначала откройте проблемный URL и посмотрите исходный код страницы. Дальше проверьте HTTP-ответ и индексацию.
- в исходном коде есть нужный
meta robots; - canonical указывает на правильный URL;
- страница не закрыта случайно от обхода, если вы хотите, чтобы поисковик увидел
noindex; - в
robots.txtнет слишком широкого правила, которое зацепило важные разделы; - в Search Console после переобхода статус страницы меняется на
Excluded by 'noindex'или аналогичный, если это ожидаемо.
Для быстрой локальной проверки можно использовать curl:
curl -I https://example.com/tag/sample/
И посмотреть, не отдает ли сервер редирект, 404 или неожиданные заголовки. Если вы проверяете страницу с параметрами, убедитесь, что canonical не меняется на случайный адрес.
Частые ошибки и почему они возникают
Закрыли URL в robots.txt и ждут, что он исчезнет из поиска
Это самая распространенная ошибка. Если страница уже известна поисковику, Disallow не заставит её исчезнуть. Для удаления из индекса нужен noindex или корректный canonical, а иногда и ручная переобходка после изменения настроек.
Ставят noindex на всё подряд
Так часто делают после установки SEO-плагина, когда в настройках отключают архивы без разбора. В итоге из поиска пропадают полезные рубрики, страницы авторов с реальной ценностью или навигационные разделы. Перед массовым noindex проверьте, какие архивы реально дают трафик и нужны ли они пользователю.
Дублируют robots meta из темы и плагина
Если тема и SEO-плагин оба выводят meta name="robots", поисковик может увидеть конфликтующие директивы. В лучшем случае он возьмёт более осторожную, в худшем — поведение станет непредсказуемым. Оставьте один источник управления мета-тегами.
Закрывают параметры URL, которые нужны для работы сайта
Иногда в robots.txt по привычке добавляют слишком широкие правила вроде Disallow: /*?. Это может сломать полезные фильтры, сортировки или страницы, на которые завязана внутренняя навигация. Сначала проверьте, какие параметры реально используются на сайте, и только потом режьте лишнее.
Практические советы по безопасности и производительности
Чем меньше поисковик тратит времени на мусорные URL, тем лучше он обходит важные страницы. Но не стоит пытаться решить всё только блокировками. Если дубли появляются из-за темы или плагина, лучше исправить источник:
- убрать лишние архивы и таксономии в настройках темы;
- отключить генерацию страниц вложений, если они не нужны;
- проверить, не создаёт ли плагин отдельные URL для фильтров и сортировок;
- не использовать несколько SEO-плагинов одновременно;
- не закрывать CSS, JS и изображения без причины — это может ухудшить рендеринг и диагностику.
Если нужен более системный подход к чистке дублей и технических страниц, в экосистеме WPShop есть Clearfy Pro, который закрывает часть типовых задач по SEO и чистке сайта. Но даже с таким плагином логику индексации всё равно нужно проверять руками: автоматические настройки не заменяют понимание того, какие URL должны оставаться в поиске.
Мини-чек-лист перед публикацией изменений
- Проверил, какие URL реально дублируются.
- Разделил технические URL и страницы, которые просто не нужны в индексе.
- Не закрыл важные разделы через
robots.txt. - Убедился, что
noindexне конфликтует с SEO-плагином. - Проверил canonical на страницах с параметрами и архивами.
- После изменений открыл страницу в браузере и посмотрел исходный код.
- Отправил важные URL на переобход, если они уже были в индексе.
Если после настройки дубли всё равно остаются в выдаче, проблема обычно не в одном теге, а в архитектуре URL. Тогда нужно смотреть на шаблоны архива, генерацию параметров и внутренние ссылки, которые продолжают вести поисковик к лишним страницам.