На WordPress чаще всего индексируются не те страницы, которые нужны: внутренний поиск, результаты с параметрами, архивы с фильтрами, сортировки и служебные URL. В итоге в индексе появляются дубли, а поисковик тратит краулинговый бюджет на мусорные страницы. Если сайт небольшой, это выглядит как «ничего страшного». На практике такие страницы мешают нормальной индексации важных материалов и размывают релевантность.
Ниже — рабочая схема: что именно закрывать, где это делать на уровне темы или плагина, и как проверить, что запрет сработал без побочных эффектов.
Какие страницы обычно нужно закрывать
Не стоит закрывать всё подряд. Сначала разделите URL на полезные и технические. Полезные страницы — это те, которые должны попадать в поиск: записи, категории, важные архивы. Технические — те, которые создают дубли или не несут самостоятельной ценности.
Типичные кандидаты на noindex
- страницы внутреннего поиска, например
?s=...; - страницы с параметрами сортировки и фильтрации, например
?orderby=,?filter_,?min_price=; - страницы пагинации, если они не должны ранжироваться отдельно;
- архивы авторов, если на сайте один автор или архивы пустые;
- служебные страницы тегов, если они дублируют категории и не дают трафика;
- страницы с параметрами UTM и другими трекинговыми хвостами, если они индексируются как отдельные URL.
Важно: robots.txt и noindex решают разные задачи. Robots.txt запрещает обход, но не гарантирует удаление URL из индекса, если он уже известен поисковику. Для дублей чаще нужен именно noindex, follow или корректный canonical.
Диагностика: где именно у вас появляется дубль
Перед правкой проверьте, какие URL уже доступны поисковым роботам. Откройте несколько типовых страниц и посмотрите исходный код. Ищите:
<meta name="robots" content="index,follow">на служебных страницах;- отсутствие canonical или canonical на саму страницу с параметрами;
- дубли title и description у страниц поиска и фильтров;
- индексацию URL с параметрами в Google Search Console или Яндекс Вебмастере;
- наличие страниц в sitemap, если они туда попали по ошибке.
Если у вас уже есть SEO-плагин, сначала проверьте его настройки. Часто проблема не в теме, а в том, что шаблон выводит обычную страницу, а плагин не меняет robots-мета для конкретного типа запроса.
Что лучше использовать: плагин, код или оба варианта
Для большинства сайтов удобнее комбинировать настройки SEO-плагина и точечный код в теме или дочерней теме. Плагин закрывает типовые случаи, код — нестандартные параметры и внутренний поиск.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Стандартные архивы, теги, авторы, поиск | Быстро, без правки кода | Не всегда учитывает кастомные параметры |
| Код в теме | Нестандартные фильтры, служебные URL, особая логика | Точный контроль | Нужно тестировать после обновлений |
| Комбинация | Когда есть и типовые, и кастомные дубли | Гибко и надежно | Нужна дисциплина, чтобы не конфликтовать с плагином |
Пошаговое решение через код
Если нужно закрыть внутренний поиск и страницы с параметрами, удобнее добавить фильтр в дочернюю тему или в небольшой mu-plugin. Так вы не потеряете настройки при обновлении основной темы.
1. Закрыть внутренний поиск и служебные параметры
<?php
add_filter('wp_robots', function ($robots) {
if (is_search()) {
$robots['noindex'] = true;
$robots['nofollow'] = false;
}
if (!empty($_GET['orderby']) || !empty($_GET['filter_']) || !empty($_GET['min_price']) || !empty($_GET['max_price'])) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант работает в современных версиях WordPress, где используется фильтр wp_robots. Он не ломает страницу, а меняет только robots-мета для нужных запросов.
2. Добавить canonical для страниц с параметрами
Если фильтр создает много URL с разными параметрами, canonical должен указывать на чистую основную страницу архива. Это не всегда заменяет noindex, но помогает поисковику понять, какой URL считать основным.
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_search()) {
return home_url('/');
}
if (!empty($_GET['orderby']) || !empty($_GET['filter_']) || !empty($_GET['min_price']) || !empty($_GET['max_price'])) {
return home_url(add_query_arg([], remove_query_arg(array_keys($_GET))));
}
return $canonical;
}, 10, 2);Здесь есть нюанс: не все запросы одинаково безопасно чистить через remove_query_arg(). Если у вас сложная фильтрация, лучше явно задавать canonical на базовый архив, а не пытаться собирать URL из текущих параметров.
Как закрыть архивы авторов и теги без лишнего риска
Если проблема не в поиске, а в дублях архивов, лучше не править шаблоны вручную. Для архивов авторов и тегов удобнее использовать SEO-плагин или фильтр robots. На сайтах с одним автором архив автора часто не нужен вообще. На сайтах с большим количеством материалов архивы тегов можно оставить только если они реально собирают трафик и не дублируют категории.
Пример для отключения индексации архивов автора и тегов через robots-мета:
<?php
add_filter('wp_robots', function ($robots) {
if (is_author() || is_tag()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Если архивы уже в индексе, не удаляйте их резко через robots.txt. Сначала поставьте noindex, дождитесь переобхода, и только потом при необходимости ограничивайте обход.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что WordPress действительно отдает нужные мета-теги и canonical.
- Откройте страницу поиска или фильтра и посмотрите исходный код.
- Проверьте, что в
<head>естьnoindexдля служебных URL. - Убедитесь, что canonical ведет на чистый URL без лишних параметров.
- Прогоните страницу через Google Search Console или Яндекс Вебмастер, если URL уже был в индексе.
- Проверьте sitemap: служебные URL не должны туда попадать.
Если используете кэш-плагин, очистите кэш после изменения. Иначе вы можете смотреть старую версию страницы и сделать ложный вывод, что код не работает.
Что считать нормальным результатом
Нормально, если служебная страница открывается для пользователя, но в исходнике у нее стоит noindex, follow. Нормально, если поисковик еще какое-то время показывает старый URL в индексе — удаление дублей не происходит мгновенно. Ненормально, если после внедрения в индекс продолжают попадать новые URL с параметрами, которых вы не учитывали в логике.
Частые ошибки и как их исправить
1. Закрыли всё через robots.txt
Это частая ошибка. Если URL уже известен поисковику, запрет обхода не равен удалению из индекса. Исправление: для дублей используйте noindex, а robots.txt — только для действительно служебных разделов, которые не должны обходиться.
2. Поставили noindex, но забыли про canonical
В результате поисковик видит несколько похожих страниц и не понимает, какая основная. Исправление: для фильтров и сортировок указывайте canonical на базовый архив или основную страницу.
3. Закрыли полезные страницы вместе с мусорными
Так бывает, когда фильтр по параметру срабатывает слишком широко. Например, вы закрыли все URL с ?, а вместе с ними сломали страницы пагинации или сортировки, которые должны индексироваться. Исправление: проверяйте конкретные параметры и тестируйте несколько реальных URL.
4. Код добавили в родительскую тему
После обновления тема перезапишется, и настройка исчезнет. Исправление: используйте дочернюю тему или mu-plugin.
5. Не проверили кэш и CDN
Старые версии страниц могут оставаться в кэше даже после правки. Исправление: очистите серверный кэш, кэш плагина и CDN, если он есть.
Практические советы по безопасности и производительности
Чем меньше случайных URL вы отдаете в индекс, тем меньше лишней нагрузки на сайт и тем проще поддерживать структуру. Но не стоит превращать SEO-настройки в набор хаотичных исключений. Лучше один раз описать правила для типовых параметров и поддерживать их централизованно.
- не храните SEO-логику в шаблонах страниц, если она относится ко всему сайту;
- не используйте слишком общие условия вроде
if (!empty($_GET))— это почти всегда ломает полезные URL; - если фильтров много, заведите отдельный список разрешенных и запрещенных параметров;
- проверяйте, не генерирует ли плагин фильтрации отдельные страницы, которые попадают в sitemap;
- после обновлений темы повторно тестируйте robots-мета на нескольких типах URL.
Если на сайте уже накопилось много дублей, иногда проще сначала навести порядок в SEO-настройках и чистке сайта. В таких случаях полезно смотреть в сторону инструментов, которые помогают управлять дублями и служебными страницами без ручного редактирования каждого шаблона.
После внедрения сохраните несколько контрольных URL: обычная запись, архив, поиск, фильтр с параметром, тег и автор. Это быстрый способ проверить, что правило работает точечно, а не «в среднем по больнице».