Если в индексе появляются одинаковые или почти одинаковые страницы, поисковик начинает тратить краулинговый бюджет на мусор, а не на важные URL. В WordPress это обычно не одна причина, а набор мелких источников дублей: архивы автора, теги, страницы вложений, пагинация, URL с параметрами, отдельные версии медиафайлов.
Ниже разберём, как найти конкретный источник дублей, чем закрывать его в WordPress и как проверить, что после правки не пострадали нужные страницы.
Диагностика: какие дубли реально попали в индекс
Сначала не трогайте настройки вслепую. Сравните список URL в Google Search Console, логи сервера и структуру сайта. Обычно дубли видно по повторяющимся шаблонам: /author/, /tag/, /page/2/, ?replytocom=, ?utm_, страницы вложений вида /image-name/.
Что проверить в первую очередь
- есть ли у записей отдельные страницы вложений;
- индексируются ли архивы категорий, тегов и авторов;
- появляются ли в индексе параметры сортировки, фильтров или UTM-метки;
- не создаёт ли тема отдельные страницы для изображений, которые дублируют основной контент;
- не размножает ли пагинация одинаковые заголовки и описания.
Если у вас уже стоит SEO-плагин, проверьте, не закрывает ли он только мета-тегом noindex одну группу архивов, а другая часть дублей остаётся доступной по прямым ссылкам и в sitemap. Это частая причина, когда в панели «всё выключено», а в индексе мусор продолжает жить.
Какие дубли WordPress стоит закрывать в первую очередь
Не все повторяющиеся URL одинаково вредны. Сначала убирайте то, что не даёт самостоятельной ценности и не должно ранжироваться отдельно.
| Источник дубля | Что делать | Компромисс |
|---|---|---|
| Страницы вложений | Редиректить на родительскую запись или отключить их индексацию | Потеря отдельной страницы медиа, но обычно это и нужно |
| Архивы тегов | Закрыть от индексации, если теги не несут навигационной ценности | Меньше точек входа из поиска |
| Архивы автора | Закрыть или оставить только при сильной редакционной структуре | Для новостных сайтов иногда полезны |
| Параметры URL | Каноникал, редирект или правила на сервере | Нужно аккуратно, чтобы не сломать фильтры и сортировки |
Пошаговое решение: закрываем дубли без лишних потерь
1. Отключите индексацию страниц вложений
Если медиафайл открывается как отдельная страница и не несёт самостоятельной пользы, лучше отправлять его на родительскую запись. Это безопаснее, чем оставлять пустую страницу с картинкой и заголовком.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent_id = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent_id ) {
wp_redirect( get_permalink( $parent_id ), 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Этот вариант подходит, если вложения не используются как отдельные посадочные страницы. Если у вас медиатека встроена в контент и отдельные attachment-страницы уже попали в индекс, редирект обычно быстрее приводит сайт к чистому состоянию, чем ожидание переобхода.
2. Закройте архивы, которые не нужны в поиске
Для тегов, авторов и некоторых архивов лучше использовать noindex,follow. Так поисковик не будет считать их самостоятельными страницами, но сможет переходить по ссылкам дальше.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Если вы используете SEO-плагин, не дублируйте это правило в двух местах одновременно. Иначе потом сложно понять, кто именно добавляет noindex и почему страница всё ещё остаётся в индексе как «просканированная, но исключённая».
3. Уберите дубли от параметров в URL
Параметры сортировки, фильтров и трекинга часто создают десятки URL с одинаковым контентом. Если параметр не нужен для отдельной индексации, лучше отдавать канонический URL без него.
<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( is_singular() && ! empty( $_GET ) ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Это не универсальное решение для всех сайтов. Если у вас есть реальные индексируемые фильтры, например посадочные страницы по категориям и атрибутам, каноникал нужно строить отдельно, а не обрезать все параметры подряд.
4. Проверьте sitemap и внутренние ссылки
Даже если страница закрыта, она может продолжать попадать в sitemap или в блоки «похожие записи». Поисковик видит такие URL снова и снова, а вы потом удивляетесь, почему они не исчезают из отчёта.
- уберите из sitemap архивы, которые закрыли от индексации;
- проверьте хлебные крошки и блоки навигации;
- не выводите ссылки на attachment-страницы;
- если тема генерирует ссылки на теги автоматически, убедитесь, что теги действительно нужны.
Когда лучше использовать плагин, а когда код
Если задача типовая и сайт ведётся без разработчика, удобнее закрыть дубли через SEO-плагин или через набор для технической чистки. Если нужен точечный контроль над attachment-страницами, каноникалами и архивами, код надёжнее: он не зависит от интерфейса и не ломается после обновления настроек.
Из практики рабочая схема такая: плагином закрывают базовые архивы и sitemap, кодом добивают attachment-страницы и редкие исключения. Если нужен именно технический набор для чистки дублей и SEO-правил, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Проверка результата после внедрения
Сразу после правок не ждите мгновенного исчезновения URL из поиска. Сначала проверьте, что сервер и шаблоны отдают нужные сигналы.
Что проверить руками
- страница вложения отдаёт 301 на родительскую запись;
- в исходном коде архивов есть
noindex, если вы его включали; - канонический URL у записей без параметров;
- закрытые страницы больше не попадают в sitemap;
- в Search Console у проблемных URL статус меняется с «доступно для индексации» на «исключено» или «просканировано, но не проиндексировано».
Проверять лучше не только в браузере, но и через curl или инструменты разработчика. Например, для attachment-страницы важно увидеть именно код ответа 301, а не визуальный редирект через JavaScript.
curl -I https://example.com/sample-image/Если вы видите 200 OK, значит редирект не сработал и страница всё ещё может индексироваться. Если 301 Moved Permanently ведёт на нужный URL, можно переходить к переобходу и мониторингу.
Частые ошибки и как их исправить
Закрыли страницу мета-тегом, но оставили её в sitemap
Поисковик получает противоречивые сигналы. Уберите URL из карты сайта, иначе переобход будет идти дольше.
Поставили noindex на всё подряд
Иногда так случайно закрывают категории, которые реально приводят трафик. Перед массовым изменением проверьте, какие архивы уже ранжируются и какие страницы дают переходы.
Сделали редирект с attachment-страниц на главную
Это хуже, чем редирект на родительскую запись. Для поисковика и пользователя главная страница не объясняет, куда делся конкретный медиафайл.
Начали чистить параметры URL без анализа
Если параметр участвует в фильтре каталога, поиске по сайту или сортировке, его нельзя просто вырезать. Сначала определите, какие параметры технические, а какие реально нужны.
Практические советы по безопасности и производительности
Любые правила для дублей лучше хранить в дочерней теме или в небольшом mu-plugin, а не в файле темы, который могут перезаписать при обновлении. Это особенно важно, если вы правите template_redirect и канонические URL.
Если сайт большой, не делайте массовые редиректы через тяжёлые PHP-условия на каждом запросе. Для простых постоянных правил иногда достаточно конфигурации сервера или SEO-плагина. Код оставляйте для точечных случаев, где нужен контекст WordPress: родитель вложения, тип записи, архив автора, наличие параметров.
И ещё один практический момент: после чистки дублей не удаляйте старые URL из Search Console вручную «на всякий случай». Сначала убедитесь, что сервер уже отдаёт правильный ответ, иначе вы просто ускорите повторное обнаружение той же проблемы.