На WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики CMS: архивы тегов, авторов, дат, пагинация, вложения медиа, страницы поиска и служебные URL. Если поисковик видит несколько почти одинаковых страниц, он тратит краулинговый бюджет впустую, а в индексе остаются не те URL, которые вы хотели бы продвигать.
Задача здесь не в том, чтобы «закрыть всё подряд», а в том, чтобы оставить в индексе полезные страницы и убрать технический шум. Ниже — рабочий сценарий: как диагностировать дубли, что именно закрывать, как это сделать кодом или плагином и как проверить, что изменения реально сработали.
Какие дубли в WordPress встречаются чаще всего
Если сайт небольшой, проблема может быть незаметна. Но на контентных проектах и блогах дубли обычно появляются в нескольких местах сразу:
- архивы тегов, которые повторяют подборки записей почти без уникального текста;
- архивы авторов, если у сайта один автор или страницы авторов не несут ценности;
- архивы по датам, которые дублируют ленту записей;
- страницы вложений медиа, где отдельная страница картинки не нужна;
- внутренний поиск, который генерирует бесконечные комбинации URL;
- пагинация архивов, если она индексируется без необходимости;
- страницы с параметрами сортировки, фильтрации и UTM, если они попадают в индекс.
Когда это уже проблема, а не просто «особенность»
Проверять нужно не по ощущениям, а по признакам. Если в поиске по сайту или в отчётах Search Console видно много URL с одинаковыми заголовками, сниппетами и коротким текстом, это уже сигнал. Ещё один практический признак — в индексе оказываются страницы тегов и архивов, которые не приводят трафик, но регулярно обходятся роботами.
Диагностика: что именно индексируется лишнего
Перед правками полезно понять, какие типы страниц реально попали в индекс. Для этого достаточно нескольких проверок.
- Откройте поиск Google и проверьте запросы вида
site:example.com tag,site:example.com author,site:example.com /page/. - В Google Search Console посмотрите отчёт по страницам и исключённым URL: там часто видны архивы, параметры и служебные страницы.
- Сравните заголовки и description у архивов тегов и категорий: если они почти одинаковые, это кандидат на закрытие или доработку.
- Проверьте, не создаёт ли тема или плагин отдельные страницы для вложений изображений.
Если у вас уже есть SEO-плагин, сначала посмотрите его настройки. Часто проблема решается без кода: достаточно отключить индексацию конкретных архивов и служебных страниц. Но если нужен точечный контроль, лучше сделать это в теме или небольшом mu-plugin, чтобы поведение не зависело от интерфейса плагина.
Пошаговое решение: закрываем от индексации только лишнее
Ниже два рабочих подхода: через SEO-плагин и через код. Если сайт поддерживается командой, кодовый вариант обычно надёжнее: он прозрачен, версионируется и не теряется после обновлений интерфейса.
Вариант 1: через SEO-плагин
В большинстве SEO-плагинов можно отключить индексацию архивов тегов, авторов, дат и страниц поиска. Это быстрый путь, если вам не нужен кастомный контроль. Но проверяйте результат не только в интерфейсе плагина: иногда настройки меняются, а canonical или robots meta остаются прежними из-за кэша или конфликта с темой.
| Подход | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстро, без кода, удобно для редакторов | Зависит от интерфейса и настроек, сложнее отследить причину |
| Код в теме / mu-plugin | Прозрачно, можно точечно управлять логикой | Нужна аккуратность и тестирование |
| Комбинированный подход | Можно закрыть базовые дубли плагином, а спорные — кодом | Риск конфликтов, если не зафиксировать источник правил |
Вариант 2: через код в functions.php или mu-plugin
Если нужно закрыть от индексации конкретные архивы и вложения, можно добавить фильтр на robots meta. Пример ниже не ломает сайт и не требует несуществующих хуков.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_author() || is_date() || is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Что делает этот код: добавляет noindex для тегов, авторов, дат, поиска и вложений, но оставляет follow, чтобы робот мог проходить по ссылкам. Это разумный базовый вариант для большинства контентных сайтов.
Если вам нужно закрыть только часть архивов, условия можно сузить. Например, оставить индексируемыми категории, но убрать теги и архивы автора:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Если нужно убрать страницы вложений с редиректом
Для медиа-страниц одного noindex иногда мало. Если отдельная страница вложения не нужна, лучше перенаправлять её на сам файл или на родительскую запись. В WordPress для этого есть штатный фильтр attachment_redirect не используется, поэтому безопаснее сделать редирект на шаблонном уровне через template_redirect.
<?php
add_action( 'template_redirect', function() {
if ( is_attachment() ) {
$post = get_post();
if ( $post && $post->post_parent ) {
wp_redirect( get_permalink( $post->post_parent ), 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Этот вариант полезен, если у вас много старых медиа-страниц, которые уже успели попасть в индекс. Но применять его стоит только после проверки: если на сайте есть сценарии, где отдельная страница вложения нужна, редирект может быть лишним.
Проверка результата после внедрения
После правок не ограничивайтесь просмотром кода страницы. Проверьте три уровня: HTML, ответ сервера и индексацию.
- Откройте архив тега, автора или страницу вложения и посмотрите исходный код: должен появиться
meta name="robots"сnoindexили соответствующий HTTP-заголовок, если он используется. - Проверьте, не конфликтует ли кэш: после изменения очистите кэш страницы, объектный кэш и CDN, если он есть.
- В Search Console отправьте URL на повторную проверку или дождитесь переобхода, если правка массовая.
- Сравните количество страниц в отчёте по индексированию через несколько дней или недель, а не сразу после изменения.
Для быстрой локальной проверки можно использовать curl:
curl -I https://example.com/tag/sample/Если вы настраивали редирект для вложений, в ответе должен быть 301 и новый Location. Если меняли robots meta, смотрите HTML-ответ, а не только заголовки.
Частые ошибки и как их исправить
Закрыли от индексации всё подряд
Самая частая ошибка — поставить noindex на категории, архивы и поиск без разбора. В итоге поисковик теряет полезные страницы, а внутренние переходы становятся менее понятными. Исправление простое: оставьте индексируемыми только те архивы, которые дают уникальную ценность и трафик.
Поменяли robots meta, но в индексе ничего не изменилось
Это нормально в первые дни. Поисковик не обновляет индекс мгновенно. Ещё одна причина — кэш: если страница отдаёт старую версию HTML, робот видит прежние мета-теги. Проверьте страницу без кэша и убедитесь, что код реально отрабатывает.
Добавили редирект на вложения, но сломали медиа-страницы
Если у вас есть внешние ссылки на страницы вложений или они используются в старых материалах, массовый редирект может менять поведение сайта. В таком случае сначала закройте вложения от индексации, а редирект включайте только после анализа логов и переходов.
Ожидали, что noindex удалит URL из поиска сразу
noindex не удаляет страницу мгновенно, а лишь даёт поисковику сигнал не держать её в индексе. Если URL уже в выдаче, может понадобиться время на переобход. Для ускорения можно использовать инструменты удаления URL в Search Console, но это не заменяет правильную настройку на сайте.
Практические советы по безопасности и производительности
Если вы вносите правки кодом, не редактируйте functions.php напрямую на боевом сайте без копии. Лучше использовать дочернюю тему или небольшой mu-plugin. Так вы не потеряете изменения при обновлении темы и сможете быстро отключить логику, если что-то пойдёт не так.
Ещё один полезный момент: не перегружайте сайт лишними SEO-правилами в нескольких местах. Если часть настроек уже задаёт SEO-плагин, а часть — тема, потом сложно понять, кто именно выставил noindex или canonical. Для поддержки это плохой сценарий. Лучше выбрать один источник правды для базовых правил и отдельно документировать исключения.
Если нужен более широкий контроль над дублями, служебными страницами и технической чисткой, имеет смысл смотреть в сторону инструментов, которые умеют управлять SEO-настройками и удалением дублей централизованно. Например, Clearfy Pro на практике часто используют именно для таких задач: отключение лишних архивов, чистка служебных элементов и снижение технического шума. Но даже с плагином всё равно стоит проверить итоговый HTML и поведение в Search Console.
Когда лучше не закрывать страницу, а доработать её
Не каждый архив нужно прятать от поисковиков. Если у тега или категории есть уникальное описание, полезные записи и стабильный спрос, такая страница может работать как посадочная. В этом случае лучше не ставить noindex, а улучшить контент архива: добавить нормальный заголовок, описание, связанный текст и убрать пустые блоки.
Практический ориентир простой: если страница не несёт самостоятельной ценности и только дублирует другие разделы, её лучше закрыть. Если же она помогает пользователю собрать материал по теме, её стоит оставить и доработать, а не прятать.