Архивы товаров часто создают лишние страницы в индексе: пагинация, сортировки, пустые категории, дубли от фильтров. В результате поисковик тратит краулинговый бюджет не туда, а в выдаче всплывают страницы, которые не должны конкурировать с карточками товаров или посадочными страницами. Если у вас магазин на WordPress и нужно оставить товары открытыми, но убрать из индекса именно архивы, задача решается точечно.
Ниже разберём рабочую схему: какие архивы закрывать, чем отличается noindex от robots.txt, как сделать это через код и как проверить, что поисковик увидел нужные директивы.
Когда архив товаров действительно стоит закрывать
Не все архивы нужно прятать от индексации. Если страница категории даёт полезный трафик, содержит уникальный текст, фильтры и нормальную структуру, её лучше оставить открытой. Закрывать имеет смысл страницы, которые не несут самостоятельной ценности и только дублируют контент:
- страницы сортировки по цене, популярности, рейтингу;
- архивы с параметрами в URL, если они создают дубли;
- пустые категории и подкатегории;
- страницы пагинации, если они не нужны в поиске;
- служебные архивы, которые не должны ранжироваться.
Если сомневаетесь, сначала проверьте, есть ли у страницы органический трафик в Search Console и аналитике. Закрывать всё подряд — плохая идея: можно случайно убрать из индекса полезные категории.
Диагностика проблемы: что именно попало в индекс
Перед правками нужно понять, какие URL создают дубли. Обычно это видно по трём признакам:
- в индексе есть несколько версий одной и той же категории с разными параметрами;
- в выдаче отображаются страницы пагинации вместо основной категории;
- в отчёте по страницам есть URL с
?orderby=,?filter_,/page/2/и похожими хвостами.
Проверка простая: откройте проблемный URL и посмотрите исходный код страницы. Если там уже стоит noindex, но страница всё равно индексируется, значит поисковик ещё не переобходил её или директива задана не там, где нужно. Если noindex нет, а закрытие делали через robots.txt, это тоже объяснимо: запрет на обход не равен запрету на индексацию, если URL уже известен поисковику.
Что выбрать: noindex, robots.txt или каноникал
| Подход | Когда использовать | Плюс | Минус |
|---|---|---|---|
noindex | Страница должна быть доступна пользователю, но не нужна в поиске | Прямой сигнал поисковику | Нужно дождаться переобхода |
robots.txt | Нужно ограничить обход технических URL | Снижает нагрузку на обход | Не убирает уже известные URL из индекса |
rel=canonical | Есть основная версия страницы и дубли с параметрами | Помогает склеить сигналы | Не всегда достаточно без noindex |
Для архивов товаров чаще всего нужен именно noindex, follow или noindex, nofollow в зависимости от структуры сайта. Если задача — убрать из индекса только архивы, но оставить переходы по ссылкам, обычно достаточно noindex, follow.
Пошаговое решение через код
Самый предсказуемый способ — добавить условие в тему или мини-плагин. Так вы не зависите от настроек стороннего SEO-плагина и можете точно управлять архивами товаров.
1. Добавьте мета robots для архивов
Пример ниже закрывает от индексации архивы товаров, страницы пагинации и архивы с параметрами сортировки. Код можно положить в functions.php дочерней темы или в отдельный плагин.
<?php
add_action('wp_head', function () {
if (is_admin()) {
return;
}
$noindex = false;
// Архивы товаров и таксономии товаров.
if (function_exists('is_post_type_archive') && is_post_type_archive('product')) {
$noindex = true;
}
if (function_exists('is_tax') && (is_tax('product_cat') || is_tax('product_tag'))) {
$noindex = true;
}
// Пагинация архивов.
if (is_paged()) {
$noindex = true;
}
// URL с сортировкой и фильтрами.
if (!empty($_GET['orderby']) || !empty($_GET['filter_color']) || !empty($_GET['filter_size'])) {
$noindex = true;
}
if ($noindex) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Здесь есть важный момент: параметры фильтров в примере нужно подстроить под ваш сайт. У вас могут быть другие имена query string, например min_price, rating_filter или собственные параметры плагина фильтрации.
2. Добавьте canonical на основную версию
Если архив создаёт дубли с параметрами, полезно указывать канонический URL без параметров. Это особенно важно для страниц сортировки и фильтрации.
<?php
add_action('wp_head', function () {
if (is_admin()) {
return;
}
if (is_paged() || !empty($_GET['orderby']) || !empty($_GET['filter_color']) || !empty($_GET['filter_size'])) {
$canonical = get_pagenum_link(1, false);
$canonical = remove_query_arg(array('orderby', 'filter_color', 'filter_size'), $canonical);
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}
}, 2);Если на сайте уже работает SEO-плагин, проверьте, не генерирует ли он canonical сам. Два разных canonical на одной странице — типичная ошибка, из-за которой поисковик начинает игнорировать оба варианта.
Как сделать это через SEO-плагин
Если вы не хотите лезть в код, задачу можно закрыть настройками SEO-плагина. Но здесь важно не путать закрытие архивов с отключением индексации всего типа записей. Для магазина это критично: можно случайно убрать из поиска и карточки товаров.
Логика такая: на уровне шаблона или настроек для архивов указываете noindex только для категорий, тегов, пагинации и служебных страниц. После этого проверяете исходный код и убедитесь, что плагин не переопределяет ваши правила.
Если нужен более широкий контроль над дублями, полезно посмотреть на Clearfy Pro: у него есть инструменты для чистки дублей и технической оптимизации. Но даже при использовании плагина всё равно проверяйте итоговый HTML, а не только галочки в админке.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что поисковик видит именно те директивы, которые вы задали.
- Откройте проблемный архив в режиме просмотра исходного кода.
- Найдите строку
<meta name="robots". - Проверьте, что для нужных URL стоит
noindex,follow. - Убедитесь, что canonical ведёт на чистую основную версию без параметров.
- В Search Console отправьте страницу на переобход, если она уже была в индексе.
Если страница всё ещё отображается в индексе через несколько дней или недель, это не всегда ошибка. Поисковику нужно время, чтобы переобойти URL и снять старые сигналы. Но если в исходнике нет noindex, значит проблема в шаблоне, кэше или конфликте плагинов.
Частые ошибки и как их исправить
Закрыли через robots.txt вместо noindex
Это самая частая путаница. Disallow мешает обходу, но не гарантирует удаление URL из индекса. Если страница уже известна поисковику, она может остаться в выдаче без сниппета. Для удаления из индекса нужен именно noindex.
Поставили noindex на весь архив товаров
Так можно случайно убрать из поиска полезные категории. Если у вас есть сильные категории с трафиком, закрывайте только пагинацию, сортировки и фильтры, а не весь раздел целиком.
Не учли кэш
После изменения кода старый HTML может продолжать отдаваться из кэша. Очистите кэш плагина, серверный кэш и CDN, если он есть. Иначе вы проверите уже неактуальную версию страницы.
Два canonical на одной странице
Один canonical может добавлять тема, второй — SEO-плагин. В итоге поисковик видит конфликт. Оставьте только один источник каноникализации.
Закрыли URL, но оставили внутренние ссылки на него
Если на закрытую страницу ведут десятки ссылок из меню, фильтров и блока похожих товаров, поисковик продолжит тратить на неё ресурсы. Проверьте навигацию и уберите лишние ссылки на служебные архивы.
Чек-лист перед публикацией правки
- Проверены URL, которые реально нужно закрыть.
- Выбрана одна стратегия:
noindex, canonical или robots.txt. - В исходнике страницы есть только один robots-мета тег.
- Canonical ведёт на чистый URL без параметров.
- Кэш очищен на всех уровнях.
- В Search Console отправлен запрос на переобход.
- Не пострадали полезные категории и карточки товаров.
Практические советы по безопасности и производительности
Если вы вносите код вручную, не редактируйте родительскую тему. Используйте дочернюю тему или отдельный мини-плагин. Так обновление темы не сотрёт правки. Для проверки удобно держать изменения в Git или хотя бы в отдельном сниппет-плагине, чтобы быстро откатить эксперимент.
Ещё один практический момент: не генерируйте noindex на каждой странице через тяжёлые проверки и запросы к базе. Условие должно быть дешёвым по ресурсам. В примере выше используются стандартные conditional tags и проверка query string — этого достаточно для большинства сайтов.
Если у вас уже есть SEO-плагин, сначала посмотрите, умеет ли он закрывать архивы без кода. Код нужен там, где стандартных настроек не хватает или требуется точная логика для конкретных параметров URL. В остальных случаях проще и безопаснее использовать штатные настройки, чем поддерживать собственный костыль.