В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики: архивы рубрик и тегов, страницы авторов, пагинация, результаты поиска, параметры сортировки, версии с ?replytocom и технические URL плагинов. Если такие страницы начинают индексироваться без контроля, поисковик тратит краулинговый бюджет на мусор, а в выдаче всплывают не те URL.
Ниже — рабочая схема: как найти источник дублей, чем закрывать каждый тип страниц и как проверить, что изменения реально сработали.
Какие дубли в WordPress встречаются чаще всего
Сначала полезно разделить проблему на типы. Это важно, потому что для каждого сценария решение разное: где-то нужен noindex, где-то канонический URL, а где-то лучше вообще убрать генерацию страницы.
Типовые источники дублей
- архивы тегов, если они дублируют рубрики по смыслу;
- страницы авторов на сайтах с одним автором;
- служебные страницы поиска по сайту;
- параметры в URL:
?utm_*,?replytocom, сортировка, фильтры; - страницы пагинации, если они не несут самостоятельной ценности;
- медиа-страницы вложений, которые повторяют контент записи;
- версии страниц для печати, AMP или другие альтернативные представления, если они настроены без каноникализации.
Диагностика: как понять, что именно индексируется
Не стоит закрывать всё подряд. Сначала проверьте, какие URL уже попали в индекс и откуда они взялись. Самый быстрый путь — посмотреть отчёты в Google Search Console и выгрузить список страниц, которые индексируются, но не должны этого делать.
Дальше откройте несколько спорных URL и сравните:
<title>иmeta description;rel="canonical";- наличие
noindexв HTML или HTTP-заголовке; - ответ сервера:
200,301,404или410.
Если у дубля такой же заголовок, как у основной страницы, и при этом каноникал указывает на себя, поисковик будет считать его полноценной страницей. Это и есть типичный источник мусора в индексе.
Что проверить в первую очередь
- страницы тегов: есть ли у них уникальный смысл;
- архивы авторов: нужны ли они вообще на сайте;
- поиск по сайту: не индексируются ли результаты поиска;
- медиа-страницы: не открываются ли они как отдельные страницы вложений;
- параметры URL: не создают ли они бесконечные комбинации.
Пошаговое решение: что закрывать и чем
Универсального рецепта нет, но для большинства проектов работает одна и та же логика: оставить в индексе только те страницы, которые реально помогают пользователю и имеют самостоятельный поисковый спрос.
1. Закройте служебные страницы от индексации
Страницы поиска, архивы автора на однопользовательском сайте, страницы вложений и технические вариации обычно не нужны в выдаче. Их можно закрыть через SEO-плагин или кодом. Если используете плагин, проверьте, что он не только добавляет noindex, но и не ломает канонические URL.
Пример для закрытия страниц поиска и вложений через код темы или мини-плагин:
<?php
add_action( 'wp_head', function () {
if ( is_search() || is_attachment() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Этот вариант рабочий, но у него есть ограничение: он влияет только на HTML. Если у вас SEO-плагин уже управляет robots, лучше не дублировать логику в двух местах.
2. Уберите медиа-страницы вложений в основной файл
В WordPress у изображения может быть отдельная страница вложения. На небольших сайтах это почти всегда лишний дубль. Практичнее перенаправить такие URL на сам файл или на родительскую запись.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent_id = get_post_field( 'post_parent', get_the_ID() );
if ( $parent_id ) {
wp_safe_redirect( get_permalink( $parent_id ), 301 );
} else {
wp_safe_redirect( home_url( '/' ), 301 );
}
exit;
}
} );Если на сайте есть смысловые медиа-страницы, например отдельные описания изображений в каталоге, такой редирект нужно применять аккуратно и точечно.
3. Нормализуйте параметры URL
Параметры вроде utm_source не должны создавать новые индексируемые страницы. Обычно достаточно канонического URL без параметров. Если же плагин или тема генерируют отдельные страницы под фильтры и сортировку, проверьте, действительно ли они нужны в поиске.
Для простого случая можно добавить каноникал на исходный URL без query string:
<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( is_singular() ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Этот фильтр не решает все проблемы с параметрами на архивных страницах, но помогает убрать лишние вариации у записей.
4. Настройте архивы рубрик и тегов
Рубрики обычно полезнее тегов. Если теги на сайте используются как декоративный слой и не ведут на отдельные полезные подборки, их лучше закрыть от индексации или вообще не выводить в sitemap.
| Подход | Когда подходит | Минус |
|---|---|---|
| Оставить в индексе | Есть уникальные подборки и трафик | Нужно следить за качеством контента |
noindex | Теги/архивы не несут самостоятельной ценности | Страница остаётся доступной, но не ранжируется |
| Удалить/объединить | Архивы дублируют рубрики или пустые | Нужно проверить внутренние ссылки и редиректы |
Если хотите решить это через плагин, а не код
На практике проще всего управлять дублями через SEO-плагин или через набор точечных настроек в админке. Если нужен более широкий набор инструментов для чистки сайта, отключения лишних архивов, дублей и технических страниц, можно посмотреть в сторону Clearfy Pro. Но даже с плагином важно понимать, какие URL вы закрываете и почему — иначе легко спрятать полезные страницы вместе с мусором.
Проверка результата после внедрения
После правок не ограничивайтесь просмотром исходника. Нужно проверить и HTML, и ответ сервера, и то, как страница выглядит для поисковика.
Что проверить вручную
- откройте проблемный URL в браузере и посмотрите исходный код;
- убедитесь, что на странице есть
noindexтам, где он нужен; - проверьте, что каноникал указывает на основную страницу;
- для редиректов убедитесь в ответе
301, а не302; - посмотрите, не остались ли URL в sitemap.
Если используете командную строку, удобно проверить заголовки так:
curl -I https://example.com/sample-page/В ответе ищите HTTP/2 301 или заголовки, связанные с robots, если они выставляются сервером. Для HTML-метатега этого будет недостаточно, поэтому дополнительно откройте страницу в браузере или через curl без -I.
Как понять, что всё сработало
- в Search Console уменьшается число индексируемых служебных URL;
- в отчёте по страницам больше нет дублей с одинаковыми заголовками;
- основные записи получают канонический URL без параметров;
- страницы поиска, вложений и пустые архивы перестают появляться в индексе.
Частые ошибки и как их исправить
Ставят noindex и одновременно закрывают URL в robots.txt
Это распространённая ошибка. Если поисковик не может зайти на страницу, он не увидит метатег noindex. В итоге URL может остаться в индексе как «запрещённый к сканированию», но не удалиться корректно. Сначала дайте роботу увидеть страницу, потом закрывайте от индексации.
Делают редирект всех архивов на главную
Такой приём выглядит просто, но часто ломает навигацию и ухудшает пользовательский опыт. Если архив не нужен, лучше либо закрыть его от индексации, либо удалить с корректным редиректом на ближайший релевантный раздел, а не на главную страницу.
Оставляют теги, но не чистят sitemap
Если страница закрыта от индексации, но продолжает попадать в sitemap, вы посылаете поисковику противоречивые сигналы. Проверьте генерацию карты сайта и исключите из неё всё, что не должно ранжироваться.
Меняют canonical на всех страницах без анализа
Каноникал — не универсальная кнопка «исправить SEO». Если поставить его неправильно, можно склеить разные страницы в одну и потерять релевантность. Особенно осторожно работайте с архивами, пагинацией и фильтрами.
Практические советы по безопасности и производительности
Чем меньше лишних URL генерирует сайт, тем проще его сканировать и поддерживать. Это не только про SEO, но и про производительность админки и сервера.
- не плодите десятки таксономий и тегов без структуры;
- отключайте архивы, которые не используются;
- не держите в индексе страницы поиска и внутренние фильтры;
- проверяйте, не создаёт ли тема отдельные шаблоны для медиа-страниц;
- после изменений очищайте кеш страницы и объектный кеш, если он есть.
Если на сайте много технических дублей из-за темы, иногда дешевле один раз привести шаблоны в порядок, чем бесконечно лечить симптомы через метатеги. Для этого полезно смотреть не только на SEO-слой, но и на то, как тема строит архивы, каноникал и пагинацию.
В итоге задача сводится к простой логике: оставить в индексе только те страницы WordPress, которые реально нужны пользователю и поиску, а всё остальное либо закрыть от индексации, либо убрать на уровне шаблона и маршрутизации. Это даёт более чистую структуру сайта и меньше сюрпризов в выдаче.