На небольшом сайте служебные URL часто незаметны, но в индексе они быстро превращаются в мусор: страницы корзины, благодарности после отправки формы, результаты фильтров, внутренний поиск, сортировки и параметры в URL. Для пользователя это рабочие экраны, для поиска — почти всегда бесполезные или дублирующие страницы. Если их не контролировать, в выдачу попадают URL без контента, с короткой сессией и без самостоятельной ценности.
Задача здесь не в том, чтобы «спрятать всё подряд», а в том, чтобы закрыть именно служебные страницы и не задеть важные посадочные, категории и карточки товаров. Ниже — практический разбор: что закрывать, чем именно закрывать и как проверить, что решение сработало.
Какие страницы WordPress обычно не должны индексироваться
Список зависит от сайта, но на практике чаще всего речь идёт о таких URL:
- страница корзины и оформления заказа, если она не несёт самостоятельной поисковой ценности;
- страница благодарности после отправки формы или заказа;
- результаты фильтров и сортировок, которые создают множество почти одинаковых комбинаций;
- внутренний поиск по сайту, если он генерирует индексируемые URL;
- служебные страницы аккаунта, личного кабинета, избранного, сравнения;
- URL с параметрами, которые меняют только представление списка, а не смысл страницы.
Главный критерий простой: если страница не должна приходить из поиска как самостоятельный ответ на запрос, её обычно не стоит индексировать. Но это не значит, что нужно ставить noindex на всё подряд. Например, фильтр по бренду или размеру на крупном каталоге может быть полезен как посадочная, а может быть чистым дублем — это уже зависит от структуры сайта.
Диагностика: где именно появляются мусорные URL
Перед правками полезно понять, что уже попало в индекс и откуда это взялось. Обычно проверяют три источника: отчёт по страницам в панели вебмастера, логи обхода и фактические URL в выдаче по оператору site:. Если на сайте есть фильтры, часто всплывают адреса с параметрами вроде ?filter=, ?orderby=, ?min_price= или похожими.
Практический чек-лист диагностики:
- посмотреть, какие служебные URL уже индексируются;
- проверить, есть ли на них внутренние ссылки;
- понять, открываются ли они без авторизации и без POST-запроса;
- сравнить содержимое таких страниц с основными посадочными;
- проверить, не создаёт ли плагин фильтров отдельные ЧПУ или параметры.
Если страница уже в индексе, одного закрытия в robots.txt обычно недостаточно. Поисковик может продолжать хранить URL в базе, если он уже был найден по ссылкам. Для удаления из индекса нужен либо noindex, либо корректная каноникализация, либо снятие страницы с публикации с последующим 404/410 в нужных случаях.
Как закрывать служебные страницы: сравнение подходов
Для WordPress есть несколько рабочих вариантов. Они не взаимозаменяемы: у каждого свой сценарий.
| Способ | Когда подходит | Плюс | Минус |
|---|---|---|---|
noindex | Страница доступна, но не должна попадать в поиск | Ясный сигнал поисковику | Нужно, чтобы страница была доступна для обхода |
robots.txt | Нужно ограничить обход, а не только индекс | Снижает нагрузку на обход | Не гарантирует удаление уже проиндексированного URL |
rel=canonical | Есть дубль, который должен указывать на основную страницу | Помогает склеивать похожие URL | Не подходит для совсем служебных страниц без аналога |
| HTTP-статус 404/410 | Страница больше не нужна | Самый жёсткий способ убрать URL | Нельзя применять к рабочим пользовательским сценариям |
Для корзины и страницы благодарности чаще всего подходит noindex, follow или вообще исключение из индекса на уровне шаблона. Для результатов фильтров — зависит от логики: если это мусорные комбинации, их закрывают; если это полезные посадочные, их оставляют и отдельно оптимизируют.
Пошаговое решение в WordPress
1. Закрываем страницу благодарности от индексации
Если страница благодарности существует как обычная страница WordPress, самый надёжный вариант — добавить на неё мета-тег noindex. Это можно сделать через SEO-плагин или кодом в теме/плагине сайта. Кодовый вариант удобен, когда не хочется зависеть от интерфейса и когда нужно точечно закрыть только один URL.
add_action('wp_head', function () {
if (is_page('thank-you')) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Здесь thank-you — слаг страницы. Если у вас другой URL, подставьте свой. Важно не закрывать по слишком общему условию, иначе можно случайно задеть похожие страницы. Если страница благодарности создаётся плагином форм и не является обычной страницей, ищите его собственные настройки индексации или шаблон вывода.
2. Убираем корзину и похожие служебные страницы
Корзина обычно не должна индексироваться, потому что её содержимое меняется у каждого пользователя. Если страница корзины доступна как отдельный URL, её лучше закрыть от индексации и не ставить на неё внутренние ссылки из контентных блоков. Для WooCommerce это обычно делается через настройки SEO-плагина или через фильтр вывода robots meta, если вы работаете кодом.
add_filter('wp_robots', function ($robots) {
if (function_exists('is_cart') && is_cart()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Такой подход использует штатный фильтр WordPress wp_robots. Он безопаснее, чем править шаблон вручную, если на сайте уже есть другая логика для robots-мета. Но если у вас подключён SEO-плагин, проверьте, не конфликтует ли он с этим фильтром и не выводит ли второй robots-тег.
3. Закрываем результаты фильтров и сортировок
Самая частая проблема — не одна страница фильтра, а сотни комбинаций параметров. В этом случае лучше не пытаться перечислить все URL вручную. Нужно определить, какие параметры создают мусор, и закрыть именно их. Если фильтры работают через GET-параметры, можно добавить noindex для страниц с этими параметрами.
add_action('wp_head', function () {
$noindex_params = array('filter', 'orderby', 'min_price', 'max_price');
foreach ($noindex_params as $param) {
if (isset($_GET[$param]) && $_GET[$param] !== '') {
echo '<meta name="robots" content="noindex,follow">' . "\n";
break;
}
}
});Это рабочий базовый пример, но его нужно адаптировать под реальные параметры на вашем сайте. Если фильтр создаёт полезные посадочные страницы, не закрывайте их автоматически только потому, что в URL есть параметр. Сначала проверьте, есть ли у такой страницы уникальный контент, спрос и смысл в индексации.
4. Добавляем canonical там, где есть дубли
Если фильтр или сортировка не меняют смысл страницы, а только порядок товаров или вид выдачи, можно указать canonical на основную категорию. Это не замена noindex во всех случаях, но хороший способ подсказать поисковику, какая версия главная.
add_filter('wpseo_canonical', function ($canonical) {
if (isset($_GET['orderby']) && $_GET['orderby'] !== '') {
return get_permalink(get_queried_object_id());
}
return $canonical;
});Этот пример относится к Yoast SEO, потому что у него есть фильтр wpseo_canonical. Если у вас другой SEO-плагин, используйте его штатный механизм, а не пытайтесь подменять canonical в шаблоне наугад. И не ставьте canonical на страницу, которая по смыслу вообще не должна индексироваться: canonical и noindex решают разные задачи.
Когда лучше использовать плагин, а когда код
Если сайт ведётся редактором или менеджером без доступа к теме, удобнее закрывать служебные URL через SEO-плагин. Если логика сложная и зависит от конкретных параметров, код даёт больше контроля. На практике часто комбинируют оба подхода: плагин закрывает стандартные страницы, а код — нестандартные фильтры.
Если нужен инструмент для общей чистки дублей и служебных элементов в WordPress, можно посмотреть на Clearfy Pro. Но даже с плагином полезно понимать, что именно он делает: автоматическое решение не отменяет проверки конкретных URL.
Как проверить, что закрытие от индексации сработало
После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- откройте исходный код страницы и проверьте наличие
<meta name="robots" content="noindex,follow">; - проверьте, не выводится ли второй robots-тег другим плагином;
- посмотрите HTTP-заголовки, если закрытие реализовано на уровне сервера;
- проверьте canonical: он должен вести на правильную основную страницу, если это дубль;
- в панели вебмастера отправьте URL на повторную проверку после обновления;
- сравните статус страницы через несколько дней: она должна исчезать из индекса постепенно, а не мгновенно.
Если URL уже был в индексе, не ждите моментального исчезновения. Поисковик должен переобойти страницу и увидеть новый сигнал. Если страница закрыта только в robots.txt, но уже известна поиску, она может ещё долго отображаться как URL без содержимого. Это нормальная ситуация, и именно поэтому noindex обычно надёжнее для таких задач.
Частые ошибки и как их исправить
Закрыли в robots.txt, но URL остался в выдаче
Это типичная ошибка. robots.txt ограничивает обход, но не всегда удаляет уже известный URL из индекса. Если страница уже попала в поиск, добавьте noindex или уберите её из публикации и дайте поисковику увидеть 404/410, если страница действительно больше не нужна.
Поставили noindex на полезную посадочную страницу
Такое случается с фильтрами и сортировками, когда правило написано слишком широко. Например, условие срабатывает на все URL с параметром filter, хотя часть из них — рабочие страницы категорий. Исправление простое: сузить условие до конкретных параметров, проверить шаблон и протестировать несколько реальных URL.
Canonical указывает не туда
Если canonical ведёт на главную вместо категории или на случайную страницу, поисковик может склеить не те URL. Это особенно опасно для фильтров и результатов поиска. Проверьте, что canonical указывает на основную версию той же сущности, а не просто на «похожую» страницу.
На странице одновременно стоят noindex и запрет в robots.txt
Иногда это мешает поисковику увидеть сам noindex. Если страница уже закрыта в robots.txt, робот может не дойти до мета-тега и не получить нужный сигнал. Для удаления из индекса сначала дайте доступ к странице, дождитесь переобхода и только потом при необходимости ограничивайте обход.
Практика безопасности и производительности
Служебные страницы часто создают не только SEO-шум, но и лишнюю нагрузку. Результаты фильтров могут генерировать тяжёлые запросы к базе, а бесконечные комбинации параметров — раздувать количество обходов. Поэтому полезно смотреть на проблему шире: закрытие от индексации должно идти вместе с ограничением бесполезных ссылок и контролем генерации URL.
Что стоит сделать дополнительно:
- не ставить внутренние ссылки на корзину и благодарность из контентных блоков;
- не плодить фильтры, которые создают одинаковые страницы с разным URL;
- проверить, не индексируются ли страницы поиска по сайту;
- следить за тем, чтобы пагинация и сортировки не создавали дубли;
- после изменений протестировать несколько URL вручную и через панель вебмастера.
Если у вас большой каталог и много служебных дублей, имеет смысл заранее продумать правила индексации на уровне темы, SEO-плагина и шаблонов. Тогда не придётся потом вычищать мусор из выдачи по одному URL.
В итоге рабочая схема обычно выглядит так: корзина и благодарность получают noindex, мусорные фильтры закрываются по параметрам, полезные посадочные остаются доступными, а каноникал помогает склеивать дубли там, где это действительно нужно. Такой подход не ломает сайт и даёт поисковику понятный сигнал, какие страницы стоит держать в индексе, а какие — нет.