В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики CMS: архивы рубрик, теги, авторы, страницы пагинации, результаты поиска, параметры в URL и версии одной и той же записи с разными адресами. Если это не контролировать, поисковик тратит обход на мусорные страницы, а в индексе остаются слабые дубликаты вместо нужных URL.
Ниже — рабочая схема: как диагностировать проблему, что закрывать через noindex, что лучше отдавать с canonical, а что вообще не должно существовать как индексируемая страница.
Какие дубли в WordPress встречаются чаще всего
Сначала полезно разделить проблему на два типа. Первый — технические дубли: одна и та же сущность доступна по нескольким URL. Второй — тонкие страницы архива, которые сами по себе не дублируют контент построчно, но почти не несут ценности для поиска.
Типовые источники дублей
- страницы тегов, если теги создаются автоматически и дублируют рубрики;
- архивы авторов на сайтах с одним автором;
- страницы вложений медиафайлов;
- страницы поиска по сайту;
- пагинация архивов, если она индексируется без необходимости;
- URL с параметрами сортировки, фильтров, utm и служебных параметров;
- версии с
/page/2/,?replytocom=,?ampи похожими хвостами, если они не нужны в индексе; - дубли из-за http/https, www/без www, слэша на конце и неправильных редиректов.
Диагностика: как понять, что именно дублируется
Не стоит закрывать всё подряд. Сначала проверьте, какие URL уже попали в индекс и какие из них поисковик считает каноническими. Для этого достаточно нескольких источников: Google Search Console, Яндекс Вебмастер, просмотр исходного кода страницы и обычный поиск по сайту.
Что смотреть в первую очередь
- отчёт по страницам с исключениями и дублями в Search Console;
- страницы с параметрами в индексе;
- наличие одинаковых title и description у архивов;
- разные URL одной записи: с категорией, без категории, с UTM, с пагинацией;
- страницы вложений, которые открываются как отдельные записи.
Если у вас уже стоит SEO-плагин, проверьте, не создаёт ли он лишние архивы сам по себе. Например, некоторые темы и плагины включают теги, архивы дат и авторов по умолчанию, хотя на небольшом сайте они только размножают тонкие страницы.
Что закрывать через noindex, а что — через canonical
Это ключевой момент. noindex говорит поисковику не добавлять страницу в индекс. canonical помогает указать основную версию URL, если дубль нужен пользователю, но не должен конкурировать в поиске.
| Сценарий | Что делать | Комментарий |
|---|---|---|
| Страницы поиска | noindex, follow | Почти всегда не нужны в индексе |
| Архивы тегов без стратегии | noindex, follow или отключение | Если теги не дают трафик и дублируют рубрики |
| Пагинация архивов | обычно оставляют, но следят за canonical | Не всегда нужно закрывать, зависит от структуры |
| Параметры сортировки и фильтров | canonical на чистый URL | Если контент тот же, меняется только представление |
| Страницы вложений | редирект на файл или родительскую запись | Чаще всего лучше не индексировать |
Пошаговое решение без лишнего риска
Шаг 1. Уберите индексирование служебных архивов
Если вы используете SEO-плагин, начните с его настроек. Для большинства сайтов достаточно отключить индексацию архивов тегов, дат и авторов, если они не несут самостоятельной ценности. Это проще и безопаснее, чем городить ручные правки в шаблоне.
Если нужен код, можно управлять мета-роботами через фильтр wp_robots. Ниже пример для страниц поиска, тегов и архивов автора на сайте с одним автором:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_tag() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант не ломает вывод страницы для пользователя, но подсказывает поисковику не индексировать её.
Шаг 2. Закройте страницы вложений
Медиафайлы в WordPress часто создают отдельные страницы вложений, которые почти всегда бесполезны для поиска. Если у вас нет задачи продвигать именно страницы изображений, лучше редиректить их на родительскую запись или сам файл.
<?php
add_action( 'template_redirect', function() {
if ( is_attachment() ) {
$parent = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent ) {
wp_safe_redirect( get_permalink( $parent ), 301 );
exit;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
} );Так вы убираете из индекса пустые страницы вложений и не плодите дубли изображений.
Шаг 3. Нормализуйте канонический URL для параметров
Если у вас есть фильтры, сортировка или служебные параметры, важно не дать им создать отдельные индексируемые версии страницы. Для этого обычно достаточно корректного canonical на «чистый» URL. В WordPress это можно сделать через фильтр wp_get_canonical_url или на уровне SEO-плагина, если он уже управляет canonical.
Пример для страниц с параметрами сортировки:
<?php
add_filter( 'wp_get_canonical_url', function( $canonical, $post ) {
if ( is_singular() && ! empty( $_GET['sort'] ) ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Здесь важно не переусердствовать: если параметр реально меняет смысл страницы, canonical на базовый URL может быть неверным. Тогда лучше пересмотреть саму логику фильтра.
Шаг 4. Проверьте robots.txt, но не пытайтесь закрыть им всё
robots.txt полезен для снижения лишнего обхода, но он не заменяет noindex. Если страница уже известна поисковику, запрет в robots может помешать ему увидеть мета-тег noindex. Поэтому для дублей чаще безопаснее сначала настроить индексацию на самой странице, а robots использовать только для явных служебных путей.
Например, можно ограничить обход внутренних поисковых URL и технических каталогов, если они не должны сканироваться:
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpНо не копируйте этот блок без проверки структуры сайта: на некоторых установках внутренний поиск работает иначе, а лишний Disallow может закрыть нужные страницы от обхода.
Как проверить, что решение сработало
После правок не ограничивайтесь просмотром кода страницы. Нужна проверка на уровне индексации и обхода.
- Откройте страницу в браузере и проверьте исходный код: есть ли
noindexи корректныйcanonical. - В Search Console отправьте URL на проверку и посмотрите, какой canonical выбран Google.
- Проверьте, исчезли ли из индекса страницы поиска, теги и вложения через оператор
site:. - Убедитесь, что основной контент не потерял трафик после закрытия архивов.
- Посмотрите серверные логи или отчёт краулера: уменьшилось ли число обходов служебных URL.
Если вы закрывали страницы вложений через редирект, проверьте код ответа: должен быть 301, а не 302. Временный редирект часто оставляет дубли в индексе дольше, чем нужно.
Частые ошибки и как их исправить
Закрыли robots.txt, но не поставили noindex
Это одна из самых частых ошибок. Если URL уже в индексе, поисковик может не увидеть мета-тег на странице, потому что вы запретили ему её обходить. Исправление простое: снимите запрет в robots для этой страницы и дайте поисковику увидеть noindex.
Поставили noindex на все архивы подряд
Иногда вместе с мусорными страницами закрывают и полезные архивы рубрик. Если рубрики дают трафик и помогают навигации, их не стоит бездумно прятать. Сначала проверьте статистику и поисковые запросы, потом принимайте решение.
Сломали canonical на страницах с параметрами
Если canonical всегда указывает на главную, поисковик начинает считать почти все страницы дублями. Это особенно заметно на сайтах с фильтрами и пагинацией. Исправление: canonical должен вести на ближайшую основную версию, а не на случайную страницу.
Удалили страницы вложений без редиректа
Если просто удалить attachment-страницы, старые URL дадут 404. Для уже проиндексированных адресов лучше сделать 301 на родительскую запись или на файл, если это оправдано.
Практические советы по безопасности и производительности
Если вы вносите правки кодом, не редактируйте тему напрямую. Используйте дочернюю тему или небольшой MU-плагин, чтобы обновление не затёрло изменения. Перед выкладкой проверьте код на staging-окружении.
Для сайтов с большим количеством дублей полезно дополнительно:
- отключить генерацию лишних архивов в настройках темы и SEO-плагина;
- не создавать теги «на автомате» для каждой записи;
- следить за количеством параметров в URL у фильтров и UTM;
- не индексировать внутренний поиск и служебные страницы;
- проверять, не создаёт ли плагин отдельные страницы для медиа.
Если нужна более широкая чистка дублей и технических страниц, имеет смысл посмотреть в сторону инструментов вроде Clearfy Pro, но только как на средство настройки, а не как на замену пониманию структуры сайта. Автоматическое решение полезно, когда вы точно знаете, что именно закрываете и зачем.
После внедрения держите под наблюдением отчёты по индексированию хотя бы несколько недель: в WordPress изменения в SEO-логике не всегда проявляются мгновенно, а ошибка в canonical или редиректе может незаметно увести трафик с нужных страниц.