В WordPress чаще всего проблема не в том, что сайт «плохо индексируется», а в том, что в индекс попадают лишние URL: страницы поиска, архивы с пустым или дублирующимся содержимым, служебные разделы, пагинация, параметры фильтров. Если просто закрыть всё подряд в robots.txt, можно получить обратный эффект: поисковик перестанет видеть нужные сигналы, но URL всё равно останутся в выдаче как «известные», только без нормальной обработки.
Нормальный сценарий обычно такой: для части страниц нужен noindex, для части — канонический URL, а robots.txt оставляют для технических ограничений, а не как универсальную кнопку «не индексировать». Ниже разберём, как это сделать в WordPress без выдуманных костылей и с проверкой результата.
Какие страницы обычно стоит закрывать
Не все «неполезные» страницы одинаковы. Одни лучше отдать с noindex, follow, другие — вообще не генерировать, третьи — оставить открытыми, но указать каноническую версию. Для WordPress типичный список выглядит так:
- страницы внутреннего поиска;
- архивы авторов на небольших сайтах, где один автор и дублируется контент;
- архивы тегов, если они пустые или почти пустые;
- страницы пагинации с тонким содержимым;
- служебные шаблоны, если они доступны по прямому URL;
- страницы с параметрами сортировки и фильтрации, если они создают дубли.
Если у вас уже есть статья про дубли страниц и архивов, здесь задача уже более прикладная: не искать проблему, а настроить точечное закрытие и проверить, что поисковик понял именно вашу логику.
Диагностика: где именно возникает лишняя индексация
Перед правками нужно понять, какой тип URL вы закрываете. Это важно, потому что для поиска, архивов и параметров фильтрации решения отличаются.
Что проверить вручную
- Откройте проблемный URL в браузере и посмотрите исходный код: есть ли
<meta name="robots"и какой там статус. - Проверьте HTTP-заголовки через DevTools или
curl -I: иногдаnoindexотдается не в HTML, а в заголовке. - Посмотрите, не прописан ли канонический URL на другую страницу, хотя контент уникален.
- Убедитесь, что страница не закрыта в
robots.txtраньше, чем вы добавилиnoindex— поисковик может не увидеть мета-тег.
Пример быстрой проверки через консоль:
curl -I https://example.com/?s=wordpressЕсли в ответе нет X-Robots-Tag, это не ошибка само по себе. Но если вы рассчитывали на заголовок, а его нет, значит правило не сработало.
Пошаговое решение: noindex, canonical и robots.txt
Самый безопасный подход — разделить задачи. noindex отвечает за исключение из индекса, canonical помогает склеить дубли, а robots.txt ограничивает обход там, где это действительно нужно.
1. Добавить noindex для выбранных типов страниц
Если вы не хотите ставить SEO-плагин только ради одной настройки, можно добавить мета-тег через wp_head. Ниже пример для поиска, архивов авторов и тегов. Логику можно расширить под свои условия.
<?php
add_action('wp_head', function () {
if (is_search() || is_author() || is_tag()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
}, 1);Этот вариант подходит, если вы понимаете, какие типы архивов закрываете. Не копируйте его бездумно на любой сайт: на новостном проекте архивы авторов могут быть полезны для индексации.
2. Задать canonical для страниц с параметрами
Если проблема в URL с параметрами вроде ?sort=price или ?filter=color, часто лучше оставить страницу доступной, но указать каноническую версию без параметров. В WordPress это можно сделать через фильтр wpseo_canonical, если используется Yoast SEO, или через собственный вывод в wp_head для простых случаев.
Пример без привязки к SEO-плагину:
<?php
add_action('wp_head', function () {
if (is_page('catalog')) {
$canonical = remove_query_arg(array('sort', 'filter', 'page'));
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}
}, 5);Здесь важно не ломать уже существующий canonical, если его выводит тема или SEO-плагин. Перед внедрением проверьте исходный код страницы, чтобы не получить два canonical одновременно.
3. Ограничить обход в robots.txt только там, где это оправдано
robots.txt полезен для технических URL, которые не должны расходовать краулинговый бюджет. Но он не заменяет noindex. Если закрыть страницу в robots и надеяться, что она исчезнет из индекса, можно получить старый URL в выдаче без возможности переобхода.
Пример аккуратного правила:
User-agent: *
Disallow: /?s=
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpДля поиска это спорный вариант: поисковые системы не всегда обрабатывают такие правила одинаково. Если цель — именно убрать страницу поиска из индекса, надежнее использовать noindex, а не только Disallow.
Когда лучше использовать плагин, а когда код
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно управлять индексированием без правки темы | Лишняя зависимость и часть настроек может быть спрятана глубоко в интерфейсе |
| Код в теме или мини-плагине | Нужна точечная логика для конкретных шаблонов | Требует контроля при обновлении темы |
robots.txt | Нужно ограничить обход технических разделов | Не решает задачу исключения из индекса сам по себе |
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Если нужно быстро и прозрачно закрыть один тип страниц, код в мини-плагине обычно надежнее, чем правка functions.php активной темы.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте исходный код и проверьте наличие
<meta name="robots" content="noindex,follow">. - Убедитесь, что canonical указывает на нужный URL без параметров.
- Проверьте ответ сервера через
curl -I, если используетеX-Robots-Tag. - Посмотрите страницу в Google Search Console через проверку URL, если сайт уже добавлен.
- Проверьте, не закрыли ли вы нужную страницу случайно вместе с дублем.
Полезный чек-лист перед публикацией правок:
- нет двух canonical на одной странице;
noindexстоит только там, где он действительно нужен;- страницы поиска и фильтров не блокируются раньше времени в
robots.txt; - архивы, которые должны индексироваться, не закрыты глобальным правилом;
- после очистки кеша HTML не отдает старую версию мета-тегов.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждете исчезновения из индекса
Это самая частая ошибка. Если поисковик не может переобойти URL, он может оставить его в индексе надолго. Для удаления из индекса нужен noindex или корректная смена canonical, а не только запрет обхода.
Ставите noindex на все архивы подряд
Так легко потерять полезные страницы. На контентных сайтах архивы категорий часто дают нормальный трафик и помогают структуре. Закрывать нужно только те разделы, которые реально создают дубли или пустые страницы.
Добавляете canonical на страницу, которая уже канонизируется плагином
В итоге поисковик видит конфликтующие сигналы. Если SEO-плагин уже выводит canonical, либо используйте его фильтры, либо отключите дублирующий вывод в теме.
Не очищаете кеш после правок
Если на сайте стоит кеширование HTML, старый noindex может продолжать отдаваться из кеша. После внедрения правок очистите серверный кеш, кеш плагина и CDN, если он есть.
Практические советы по безопасности и производительности
Если вы вносите изменения кодом, лучше не править активную тему напрямую. Для таких задач удобнее мини-плагин или mu-plugin: так настройка не слетит после обновления темы.
Еще один момент — не плодите тяжелую логику в wp_head. Условие должно быть простым и предсказуемым. Если вы начинаете делать сложные запросы к базе на каждой странице ради решения с индексированием, это уже плохая цена за одну мета-строку.
Если задача шире и включает чистку дублей, тонких страниц и служебных архивов, имеет смысл сначала навести порядок в структуре сайта, а уже потом точечно закрывать оставшиеся URL. В некоторых проектах это удобнее делать через SEO-плагины вроде Clearfy Pro, но только если вам нужен именно набор готовых переключателей, а не кастомная логика.
Главная проверка простая: страница должна либо остаться доступной и правильно канонизироваться, либо быть явно закрыта от индексации, но не обе вещи одновременно и не «на глаз». Если после правок URL по-прежнему появляется в выдаче, смотрите не только в мета-теги, но и в кеш, canonical и старые ссылки, которые уже успели попасть в индекс.
}