Если в Search Console растут страницы-дубли, а в индексе всплывают теги, авторы, вложения и служебные архивы, проблема обычно не в «плохом SEO», а в структуре WordPress. Система по умолчанию умеет публиковать слишком много одинаковых или почти одинаковых URL: архивы дат, авторов, вложений, страниц пагинации, параметров сортировки и поиска. Для небольшого сайта это выглядит безобидно, но на практике размывает сигналы и мешает поисковику выбрать основную страницу.
Ниже — рабочая схема: сначала находим источник дублей, потом решаем, что закрывать от индексации, что склеивать через canonical, а что лучше вообще убрать из генерации.
Какие дубли WordPress создает чаще всего
В типовой установке WordPress дубли появляются не только из-за контента, но и из-за шаблонной логики. Один и тот же материал может быть доступен через несколько адресов: запись, архив рубрики, архив автора, архив даты, страницы пагинации и иногда через вложение медиафайла. Если тема или плагин добавляют свои фильтры, сортировки и параметры, количество вариантов URL быстро растет.
Что стоит проверить в первую очередь
- архивы авторов, если на сайте один автор или авторские страницы не несут пользы;
- архивы дат, если вы не ведете новостной или хронологический проект;
- страницы вложений медиафайлов;
- страницы поиска по сайту;
- пагинацию архивов, если она индексируется без необходимости;
- URL с параметрами сортировки, фильтров и UTM, если они попадают в индекс;
- дубли из-за http/https, www/без www и слэша на конце.
Диагностика проблемы: где искать дубли
Начинать лучше не с правок, а с проверки того, что именно уже индексируется. Самый быстрый путь — посмотреть отчеты Search Console, затем пройтись по сайту краулером или хотя бы вручную проверить шаблонные URL. Важно не гадать, а увидеть конкретные адреса, которые поисковик считает отдельными страницами.
Что смотреть в Search Console
Откройте отчеты по страницам и исключенным URL. Ищите признаки вроде «другая страница с каноническим тегом», «просканировано, но не проиндексировано», «дубликат, Google выбрал другой канонический URL». Если таких сообщений много, это уже не единичный случай, а системная проблема структуры.
Быстрая ручная проверка
Проверьте несколько типовых адресов:
https://site.ru/?s=тест
https://site.ru/author/admin/
https://site.ru/2024/01/
https://site.ru/sample-post/attachment/image-name/
https://site.ru/category/news/page/2/
Если эти страницы отдают полноценный контент и индексируются без ограничений, поисковик получает лишние варианты одной и той же структуры.
Что закрывать, а что оставлять: короткая логика выбора
Не все дубли нужно запрещать одинаково. Иногда достаточно canonical, иногда лучше noindex, а иногда разумнее убрать сам источник генерации. Например, архивы рубрик обычно полезны, а архивы дат на большинстве сайтов — нет. Страницы поиска почти всегда бесполезны для индексации. Вложения медиа часто создают пустые страницы, которые только засоряют индекс.
| Вариант | Когда подходит | Минус |
|---|---|---|
| noindex, follow | для архивов, которые нужны пользователю, но не должны индексироваться | страница остается в обходе, но не участвует в поиске |
| canonical | для страниц с параметрами, пагинацией и близкими дублями | не решает проблему, если у дубля есть отдельный полезный контент |
| отключение генерации | для архивов автора, дат, вложений, если они не нужны | нужно аккуратно проверить тему и ссылки |
Пошаговое решение через код и настройки
Если нужен контролируемый вариант без лишних плагинов, часть дублей можно убрать кодом. Для этого удобно использовать дочернюю тему или небольшой mu-plugin. Ниже — безопасные примеры, которые не ломают основной контент.
1. Отключить архивы дат и авторов, если они не нужны
Если сайт ведет один автор или архивы дат не несут ценности, их лучше отключить на уровне шаблонной логики и редиректа. Для этого можно использовать template_redirect и отправлять 404 на ненужные архивы. Такой подход честнее, чем оставлять пустую страницу и надеяться на robots.txt.
add_action( 'template_redirect', function () {
if ( is_author() || is_date() ) {
global $wp_query;
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include get_query_template( '404' );
exit;
}
} );
Если архивы нужны для навигации, но не для индексации, вместо 404 лучше оставить страницу доступной и добавить noindex через SEO-плагин или через wp_head.
2. Добавить noindex для поиска и вложений
Страницы поиска и attachment-страницы редко должны попадать в индекс. Для них обычно достаточно мета-тега robots. Если у вас уже стоит SEO-плагин, проверьте, не делает ли он это сам. Если нет — можно добавить точечно.
add_action( 'wp_head', function () {
if ( is_search() || is_attachment() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );
Этот вариант работает только для фронтенда. Если тема или плагин уже выводят другой robots-мета тег, не дублируйте его. Сначала проверьте исходный код страницы.
3. Настроить canonical для страниц с параметрами
Если на сайте есть фильтры, сортировки или UTM-параметры, canonical должен указывать на чистую основную версию URL. В WordPress это часто делает SEO-плагин, но если у вас кастомная логика, canonical можно задать вручную через wp_head.
add_action( 'wp_head', function () {
if ( is_search() ) {
return;
}
if ( ! empty( $_GET ) ) {
$canonical = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
echo '<link rel="canonical" href="' . esc_url( $canonical ) . '" />' . "\n";
}
} );
На практике такой код нужно применять осторожно: он не должен конфликтовать с уже существующим canonical от SEO-плагина. Если плагин есть, лучше настраивать canonical в нем, а не дублировать логику в теме.
Когда лучше использовать плагин, а когда код
Если задача типовая, плагин экономит время и снижает риск ошибки. Если же проблема точечная и связана с конкретной темой или кастомным типом записей, код дает больше контроля. Например, в Clearfy Pro есть инструменты для чистки лишних архивов, дублей и служебных страниц; это удобно, когда нужно быстро привести базовую структуру в порядок без ручной сборки набора правил. Но даже в этом случае полезно понимать, что именно отключено и почему.
Если выбираете между подходами, ориентируйтесь на объем изменений:
- одна-две проблемы — проще решить кодом;
- много служебных страниц и дублей — удобнее использовать плагин с понятными настройками;
- сложная тема с кастомными архивами — сначала тест на staging, потом правка шаблонов.
Как проверить, что решение сработало
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит нужные сигналы, а ненужные URL либо закрыты, либо склеены с основной страницей.
Проверка в браузере и исходном коде
- откройте проблемный URL и посмотрите, есть ли
meta robots; - проверьте наличие одного canonical, а не нескольких;
- убедитесь, что на страницах поиска и вложений нет индексации;
- проверьте код ответа: для отключенных архивов должен быть 404 или 410, если вы именно их убирали.
Проверка через Search Console
После переобхода страниц смотрите, уменьшается ли число дублей и служебных URL в отчете об индексировании. Изменения не всегда видны сразу: поисковику нужно время, чтобы пересканировать страницы и обновить статус. Если canonical игнорируется, значит где-то есть конфликт — чаще всего между темой, SEO-плагином и ручной разметкой.
Частые ошибки и как их исправить
Большая часть проблем возникает не из-за самого noindex или canonical, а из-за неправильного применения. Ниже — типовые ошибки, которые я вижу чаще всего.
Дублируется canonical
Причина обычно в том, что canonical выводит и тема, и SEO-плагин. В исходнике страницы должен быть один канонический URL. Если их два, поисковик может проигнорировать оба. Решение: оставьте только один источник canonical.
Закрыли страницу robots.txt, но она уже в индексе
robots.txt не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, лучше использовать noindex или отдать 404/410, если страница действительно не нужна. Для старых дублей robots.txt — слабый инструмент.
Поставили noindex на полезный архив
Иногда закрывают рубрики, которые реально помогают навигации и собирают внутреннюю перелинковку. В этом случае вы теряете полезную посадочную страницу. Сначала оцените, есть ли у архива уникальный текст, список материалов и трафик из поиска.
Удалили архивы автора, но забыли про ссылки в теме
Если тема выводит ссылки на автора в карточках и хлебных крошках, а архив автора теперь 404, это не катастрофа, но лучше проверить, не ломается ли UX. Иногда достаточно оставить архив, но закрыть его от индексации.
Чек-лист перед публикацией изменений
- проверить, какие URL реально индексируются;
- убедиться, что canonical выводится один раз;
- не закрывать в noindex страницы, которые нужны для навигации;
- не использовать robots.txt вместо noindex для уже известных дублей;
- проверить 404/410 для отключенных архивов;
- сделать изменения на staging, если тема кастомная;
- после правок запросить переобход в Search Console.
Безопасность и производительность
Чистка дублей полезна не только для индексации. Чем меньше лишних архивов и страниц поиска, тем меньше бесполезных обходов и тем проще поддерживать шаблоны. Но не стоит превращать это в массовое удаление всего подряд. Сначала определите, какие URL реально создают шум, и только потом отключайте их.
Если используете код, держите его в дочерней теме или в отдельном mu-plugin, а не в основном шаблоне. Так изменения не потеряются после обновления. И обязательно проверяйте, как ведет себя сайт после обновления SEO-плагина или темы: иногда разработчики меняют вывод canonical, robots или архивов, и старые ручные правки начинают конфликтовать.
В итоге рабочая схема простая: найти источник дублей, оставить полезные архивы, закрыть служебные страницы, не дублировать canonical и проверить результат по исходнику страницы и отчетам Search Console. Это скучная работа, но именно она обычно дает самый предсказуемый эффект на технически запущенном WordPress-сайте.