Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы автора, пагинация, параметры URL, версии с /amp/, вложения медиафайлов, сортировки и фильтры. В результате поисковик видит несколько адресов с почти одинаковым содержимым и начинает выбирать канонический URL не так, как вы ожидали. На небольшом сайте это часто выглядит как «страницы есть, а трафика нет».
Ниже — рабочая схема: как диагностировать источник дублей, чем закрывать их в WordPress, где достаточно noindex, а где нужен canonical или вообще удаление лишнего URL из структуры сайта.
Какие дубли в WordPress встречаются чаще всего
Сначала полезно понять, что именно вы считаете дублем. Не каждый похожий URL — проблема. Например, пагинация архива или сортировка товаров могут быть нормальными страницами, если они реально нужны пользователю. Проблема начинается там, где один и тот же контент доступен по нескольким адресам без смысла для посетителя и поисковика.
Типовые источники дублей
- страницы вложений медиафайлов, которые дублируют запись или изображение;
- архивы тегов и авторов, если они почти пустые или повторяют рубрики;
- страницы с параметрами
?replytocom=,?utm_,?sort=и похожими; - HTTP/HTTPS и www/без www, если редиректы настроены неполно;
- дубли главной страницы через разные варианты слеша и индекса;
- страницы пагинации, если на них индексируется тот же текст, что и на первой странице архива;
- страницы поиска по сайту и служебные URL, которые не должны попадать в индекс.
Диагностика: как найти дубли без догадок
Начинать лучше не с плагина, а с проверки того, какие URL уже попали в индекс и как они связаны между собой. Если у вас есть доступ к Search Console, откройте отчёт по страницам и посмотрите, какие адреса поисковик считает альтернативными или дублирующими. Если доступа нет, можно быстро проверить сайт вручную и через краулер.
Что проверить в первую очередь
- открывается ли одна и та же статья по нескольким адресам;
- есть ли у страниц вложений отдельные URL с тонким содержимым;
- не индексируются ли теги, авторы и архивы дат без реальной пользы;
- нет ли у сайта нескольких версий главной страницы;
- не создаёт ли тема или плагин параметры в ссылках на архивы и поиск;
- совпадает ли
canonicalна странице с основным адресом.
Для быстрой проверки удобно использовать консоль и посмотреть заголовки ответа:
curl -I https://example.com/sample-post/В ответе ищите редирект на основной URL и отсутствие неожиданных цепочек. Если страница доступна и по http, и по https, или с www и без него, это уже источник путаницы. Ещё одна полезная проверка — открыть исходный код страницы и найти тег <link rel="canonical" ...>.
Что закрывать через noindex, а что — через canonical
Это ключевой момент. noindex говорит поисковику не показывать страницу в выдаче. canonical подсказывает, какую версию считать основной. Они решают разные задачи и не взаимозаменяемы.
| Сценарий | Что делать | Комментарий |
|---|---|---|
| Техническая страница без ценности | noindex, follow | Подходит для поиска по сайту, служебных архивов, пустых тегов |
| Параметры одного и того же контента | canonical на чистый URL | Если страница нужна пользователю, но есть альтернативные адреса |
| Полный дубль | 301-редирект | Лучше убрать дубль на уровне сервера или WordPress |
| Пагинация архива | Оставить индексируемой по ситуации | Не закрывать автоматически, если страницы реально полезны |
Если у вас дубль — это просто альтернативный адрес одной и той же записи, лучший вариант обычно редирект 301. Если же страница нужна, но не должна конкурировать с основной, используйте canonical. А вот noindex стоит применять к страницам, которые не должны участвовать в поиске вообще.
Пошаговое решение в WordPress
1. Уберите технические дубли на уровне настроек
Проверьте, что в Настройки → Общие задан один вариант домена: либо с www, либо без него. Дальше убедитесь, что сайт везде открывается по HTTPS и что сервер отдаёт 301-редирект со старых вариантов адреса на основной. Это базовый слой, без которого остальные меры будут работать хуже.
Если дубли создаёт плагин кэширования или SEO-плагин, сначала посмотрите его настройки. Часто там есть отдельные опции для архивов авторов, тегов, медиа-страниц и хлебных крошек. Не включайте всё подряд: сначала определите, какие разделы реально нужны.
2. Закройте ненужные архивы через код
Если вы не используете архивы авторов или даты, их можно отключить от индексации через фильтры SEO-плагина или через собственный код. Ниже пример для wp_robots, который добавляет noindex к страницам поиска и к архивам авторов и дат:
add_filter( 'wp_robots', function( array $robots ) : array {
if ( is_search() || is_author() || is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант подходит, если вы не хотите ставить отдельный SEO-плагин только ради базовой индексации. Но если у вас уже есть SEO-плагин, не дублируйте его логику своим кодом без необходимости: можно получить конфликт мета-тегов.
3. Уберите страницы вложений
Страницы вложений часто создают пустые или почти пустые URL. Если они не нужны, лучше редиректить их на сам файл или на родительскую запись. В WordPress это можно сделать через фильтр attachment_link или на уровне плагина, который умеет отключать attachment pages.
Простой вариант — редиректить одиночные страницы вложений на родительский пост, если он есть:
add_action( 'template_redirect', function() {
if ( is_attachment() ) {
$parent = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent ) {
wp_redirect( get_permalink( $parent ), 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Это безопаснее, чем оставлять пустую attachment-страницу в индексе. Но перед внедрением проверьте, не используют ли эти URL где-то в медиатеке или внешних ссылках.
4. Настройте canonical для параметров и сортировок
Если у вас есть страницы с параметрами, которые меняют только сортировку или фильтр, но не смысл контента, canonical должен указывать на чистую версию. В большинстве SEO-плагинов это делается автоматически, но не всегда корректно. Особенно часто проблемы возникают на кастомных архивах и страницах, которые строятся через шаблон темы.
Если нужно вручную подправить canonical, используйте фильтр wpseo_canonical в Yoast SEO или аналогичный фильтр вашего SEO-плагина. Но делайте это только если понимаете, какой URL должен быть основным. Иначе можно случайно склеить разные страницы в одну.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить, что сервер, HTML и поисковая логика дают один и тот же сигнал.
- основной URL отдаёт 200 OK и не редиректит по кругу;
- альтернативные варианты URL дают 301 на канонический адрес;
- в исходном коде страницы указан правильный
canonical; - ненужные архивы имеют
noindexтам, где это было задумано; - страницы вложений больше не доступны как отдельные пустые записи;
- в Search Console не растёт число альтернативных страниц без причины.
Для быстрой ручной проверки удобно сравнить несколько URL одной и той же записи:
curl -I https://example.com/post/
curl -I https://www.example.com/post/
curl -I http://example.com/post/Если все лишние варианты ведут на один адрес, а в HTML совпадает canonical, базовая часть задачи решена. Дальше уже можно смотреть отчёты поисковых систем и логи сервера, чтобы убедиться, что старые дубли постепенно уходят из обхода.
Частые ошибки и почему они ломают индексацию
Ставят noindex на всё подряд
Это самая частая ошибка. Если закрыть от индексации рубрики, которые реально собирают трафик, или пагинацию полезных архивов, вы сами обрежете входные страницы. noindex нужен точечно, а не как универсальная кнопка.
Путают canonical и redirect
Canonical — это подсказка, а не жёсткое правило. Если у вас есть явный дубль, лучше редиректить его 301. Иначе поисковик может продолжить обход обеих версий, особенно если на них есть внешние ссылки.
Оставляют страницы вложений без редиректа
Медиа-страницы часто выглядят безобидно, но на практике создают много тонких URL. Если они не нужны для навигации, их лучше убрать из индекса и перевести на родительский контент.
Не проверяют тему и плагины после обновления
После обновления SEO-плагина или темы canonical и robots-мета могут измениться. Это особенно заметно, если тема сама выводит мета-теги или если несколько плагинов пытаются управлять индексацией одновременно.
Что делать, если дубли создаёт тема или плагин
Если источник проблемы — не контент, а код темы, сначала найдите, где именно формируется лишний URL. Часто это шаблоны архивов, хлебные крошки, блоки похожих записей или кастомные фильтры. Исправлять это лучше в дочерней теме или через небольшой mu-plugin, а не править файлы ядра темы напрямую.
Для сложных сайтов полезно держать под рукой инструменты, которые убирают технический мусор и помогают с SEO-настройками без ручного патча шаблонов. Например, Clearfy Pro из экосистемы WPShop можно рассматривать как один из вариантов для чистки дублей и технических настроек, если вам нужен именно набор практических переключателей, а не отдельные разрозненные правки. Подробности: https://wpshop.ru/plugins/clearfy.
Мини-чек-лист перед публикацией правок
- один основной домен и один протокол;
- 301-редиректы на альтернативные варианты URL;
- canonical указывает на чистый адрес;
- ненужные архивы закрыты точечно, а не массово;
- страницы вложений не плодят пустые URL;
- после изменений проверены исходный код и заголовки ответа;
- нет конфликта между SEO-плагином и кастомным кодом.
Если после внедрения всё ещё видны странные дубли, не пытайтесь лечить это только мета-тегами. Сначала проверьте структуру ссылок, правила редиректов и шаблоны темы. В WordPress дубли почти всегда рождаются на стыке контента, настроек и шаблонов, поэтому и чинить их нужно на том же стыке.