В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики: архивы категорий, теги, авторы, пагинация, вложения, страницы поиска и служебные URL могут отдавать похожий или почти одинаковый контент. Если это не контролировать, поисковик тратит обход на мусорные страницы, а в индексе остаются не те URL, которые вы хотели бы продвигать.
Ниже — рабочий сценарий: сначала быстро диагностируем, какие именно дубли у вас есть, потом выбираем способ закрыть их от индексации, а затем проверяем, что изменения реально применились.
Какие дубли чаще всего создаёт WordPress
Перед правками важно понять источник проблемы. В WordPress дубли обычно возникают в таких местах:
- архивы тегов и авторов, если они не несут самостоятельной ценности;
- страницы пагинации архивов, где повторяется один и тот же список записей;
- страницы вложений изображений, если они индексируются отдельно;
- внутренний поиск сайта;
- страницы с параметрами сортировки, фильтров или UTM, если они попадают в индекс;
- дубли главной страницы через разные варианты URL, например с
wwwи без, сindex.phpи без него, если сервер настроен неаккуратно.
Быстрая диагностика проблемы
Проверять нужно не только через визуальный осмотр, но и по факту ответа сервера и мета-тегов. Откройте несколько типовых URL и посмотрите:
- есть ли на странице
noindexв<meta name="robots">; - не отдает ли страница одинаковый title и description с другими архивами;
- не доступна ли страница вложения как отдельный контент;
- не индексируется ли пагинация вида
/page/2/и далее; - не создают ли плагины SEO, фильтров или кеша собственные канонические URL.
Если у вас есть доступ к Search Console, откройте отчёт по страницам и посмотрите, какие URL попали в индекс без смысла: внутренний поиск, теги без контента, архивы автора на сайте с одним автором, страницы пагинации и вложения. Это хороший ориентир, откуда начинать.
Что лучше закрывать от индексации, а что оставлять
Не все архивы нужно прятать. Иногда теговые страницы или архивы категорий дают трафик и нормально ранжируются. Ошибка многих сайтов — поставить noindex на всё подряд и потом удивляться падению видимости.
| Вариант | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Если нужно быстро закрыть архивы без кода | Удобно для редактора | Может быть лишняя нагрузка и зависимость от настроек |
| Код в теме или мини-плагине | Если нужен точечный контроль | Прозрачно и предсказуемо | Нужно аккуратно тестировать после обновлений |
| robots.txt | Если надо ограничить обход, а не индексацию | Просто внедрить | Не гарантирует исключение из индекса, если URL уже известен поисковику |
Для большинства сайтов разумный минимум такой: закрыть от индексации архивы авторов на сайтах с одним автором, внутренний поиск, страницы вложений, служебные страницы и, при необходимости, пагинацию архивов. Категории и важные теги лучше оценивать отдельно.
Пошаговое решение без лишних плагинов
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Многие плагины умеют ставить noindex для архивов и задавать канонические URL без кода. Но если нужен контроль на уровне темы или сайта, можно сделать это через фильтры WordPress.
1. Закрываем архивы автора и поиска
Этот вариант подходит, если на сайте один автор или архивы авторов не несут пользы. Поиск тоже обычно не стоит индексировать: это служебная страница, которая меняется от запроса к запросу.
add_filter('wp_robots', function ($robots) {
if (is_author() || is_search()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Фильтр wp_robots работает в современных версиях WordPress и позволяет менять robots-правила без ручной правки шаблонов. Это лучше, чем вставлять мета-тег в header.php, потому что логика остаётся в одном месте.
2. Отключаем индексацию страниц вложений
Страницы attachment часто создают тонкие дубли: на них почти нет смысла, зато они могут попадать в индекс. Если вам не нужны отдельные страницы изображений, проще перенаправлять их на сам файл или родительскую запись.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
}
});Это не только убирает дубли, но и сокращает количество бесполезных страниц в обходе. Если у вас медиатека используется как отдельный каталог, редирект лучше не ставить без анализа структуры сайта.
3. Добавляем noindex для пагинации архивов
Пагинация сама по себе не ошибка, но страницы /page/2/, /page/3/ и дальше часто повторяют один и тот же набор карточек и не дают самостоятельной ценности. Если у вас контентный сайт, такие страницы обычно лучше исключить из индекса.
add_filter('wp_robots', function ($robots) {
if (is_paged() && (is_home() || is_archive() || is_category() || is_tag())) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Здесь важно не переборщить. Если у вас большой каталог материалов и поисковик хорошо использует пагинацию для обхода, решение стоит проверить на части сайта, а не включать вслепую.
4. Для robots.txt используем только ограничение обхода
Если нужно снизить нагрузку на сервер или не пускать робота в служебные разделы, robots.txt полезен. Но он не заменяет noindex.
add_filter('robots_txt', function ($output, $public) {
$output .= "\nDisallow: /?s=";
$output .= "\nDisallow: /search/";
$output .= "\nDisallow: /attachment/";
return $output;
}, 10, 2);Этот подход уместен как дополнительная мера, но не как единственный способ убрать URL из индекса. Если страница уже известна поисковику, одного robots.txt обычно недостаточно.
Если используете SEO-плагин
В большинстве случаев удобнее закрывать дубли через SEO-плагин, если он уже установлен и настроен. Это особенно полезно, когда правки должны делать не разработчики, а редакторы или контент-менеджеры. Важно только не дублировать настройки: если плагин ставит noindex, не нужно ещё раз навешивать его кодом без необходимости.
Проверьте, умеет ли ваш плагин:
- закрывать архивы авторов;
- закрывать теги, если они пустые или технические;
- ставить
noindexна поиск и пагинацию; - задавать canonical для страниц с параметрами;
- не создавать лишние мета-теги в шаблоне.
Если нужен более широкий набор инструментов для чистки дублей и технической оптимизации, иногда проще использовать один аккуратный SEO/cleanup-плагин, чем собирать это из нескольких разрозненных решений. Но даже в этом случае логику индексации лучше понимать вручную, а не полагаться на «автоматически всё исправит».
Как проверить, что решение сработало
После внедрения не ограничивайтесь просмотром исходника. Проверка должна быть в несколько шагов:
- Откройте проблемный URL в браузере и убедитесь, что в исходном коде есть
noindexили нужный canonical. - Проверьте HTTP-ответ, если вы делали редирект для вложений: должен быть
301, а не200. - Сравните несколько страниц пагинации: у них не должно быть одинаковых canonical, если вы специально не задавали общий канонический URL.
- Посмотрите, не сломались ли хлебные крошки, архивы и навигация по сайту.
- В Search Console отправьте URL на повторную проверку, если проблема уже была в индексе.
Для быстрой локальной проверки удобно использовать curl:
curl -I https://example.com/author/admin/
curl -I https://example.com/page/2/
curl -I https://example.com/sample-attachment/Если вы видите 200 там, где ожидали редирект, значит правило не сработало или конфликтует с темой, кешем либо другим плагином.
Частые ошибки и как их исправить
- Ставят noindex только в robots.txt. Это не убирает URL из индекса, если он уже известен поисковику. Добавляйте мета-robots или редирект там, где это уместно.
- Закрывают все архивы подряд. В итоге пропадают полезные страницы категорий и тегов. Сначала оцените, какие архивы реально дают трафик.
- Делают редирект вложений без проверки структуры сайта. Если медиатека используется как отдельный контентный раздел, редирект может быть лишним.
- Конфликтуют кодом и SEO-плагином. Два разных источника могут по-разному задавать canonical и robots. Оставьте один источник истины.
- Не очищают кеш. После изменения robots-логики старые версии страниц могут ещё некоторое время отдаваться из кеша.
Что стоит учесть для безопасности и производительности
Технические правки для индексации лучше держать в мини-плагине или в дочерней теме, а не в случайно отредактированном шаблоне. Тогда обновление темы не затрёт изменения. Если правок немного, отдельный mu-plugin — ещё более надёжный вариант.
Следите за тем, чтобы:
- не добавлять тяжёлые проверки в каждый запрос без необходимости;
- не плодить несколько фильтров, которые делают одно и то же;
- не отключать индексацию на уровне сервера, если достаточно точечной настройки в WordPress;
- после правок очистить кеш страницы, объектный кеш и кеш CDN, если он есть.
Если у вас много технических дублей, иногда полезно сначала навести порядок в структуре сайта: убрать пустые теги, сократить количество архивов, пересмотреть таксономии и отключить генерацию ненужных страниц. Это даст больше эффекта, чем точечная маскировка симптомов.
Для сайтов, где нужно регулярно чистить дубли, служебные архивы и другие технические хвосты, удобно иметь отдельный набор инструментов для SEO-оптимизации и удаления лишнего мусора. Но даже с плагином полезно понимать, какие URL вы закрываете и почему: это проще проверить, чем потом искать причину просадки в индексации.