Нет, специально отдавать поисковому роботу полный список услуг, а обычному пользователю — только услуги текущего месяца, не следует. Если различие создаётся по User-Agent или другому признаку «бот/человек» ради индексации и ранжирования, схема попадает в область клоакинга. Безопаснее отдавать всем одну и ту же содержательную версию страницы, а месячный фильтр реализовать на уровне интерфейса.
Почему вариант «роботу всё, человеку только декабрь» рискованный
Google определяет клоакинг как показ разного контента пользователям и поисковым системам с целью манипулировать результатами поиска. В качестве примера Google приводит добавление контента только тогда, когда страницу запрашивает поисковый робот. Нарушение спам-политик может привести к снижению видимости или исключению страницы либо сайта из результатов поиска.
Даже технология динамического рендеринга не даёт разрешения создавать отдельную SEO-версию страницы: Google указывает, что версии для робота и пользователя должны оставаться содержательно схожими, а существенно различающийся контент может считаться клоакингом.
У Яндекса формулировка ещё ближе к рассматриваемой ситуации. Клоакингом называется показ разного контента посетителям и поисковым роботам, а среди примеров нарушения отдельно указана ситуация, когда робот видит предназначенный для воздействия на поиск блок, которого не видит пользователь.
Поэтому распознавать Googlebot или YandexBot и подставлять им полный каталог услуг — плохое решение.
Можно ли оставить полный список в HTML, но скрыть часть карточек
Да. Это принципиально другой сценарий: содержимое страницы одинаково для человека и поискового робота, меняется только его отображение.
Google прямо исключает из категории злоупотребления скрытым контентом обычные вкладки, аккордеоны и другие интерфейсные элементы, которые показывают или скрывают информацию после взаимодействия пользователя.
Например, /category/ может содержать в HTML карточки всех услуг, но JavaScript после загрузки автоматически активирует текущий месяц. Пользователь видит сначала декабрьские услуги, но может переключиться на «Все услуги», январь, февраль и другие варианты.
При этом лучше не загружать сами карточки только после клика пользователя. Google предупреждает, что не выполняет пользовательские действия вроде нажатия кнопки ради загрузки основного контента. Поэтому ссылки на услуги должны уже находиться в исходном либо отрендеренном HTML, а фильтр должен только менять их видимость.
Условно безопасная схема:
<nav class="month-filter">
<button data-month="current">Актуальные сейчас</button>
<button data-month="all">Все услуги</button>
</nav>
<div class="services">
<article data-month="january">
<a href="/service/service-1/">Услуга 1</a>
</article>
<article data-month="december">
<a href="/service/service-2/">Услуга 2</a>
</article>
</div>
Один и тот же HTML должен получать и обычный браузер, и поисковый робот.
Как дать поисковикам доступ ко всем карточкам услуг
Не обязательно показывать пользователю одновременно сотни карточек. Задача заключается не в том, чтобы физически разместить весь каталог на первом экране, а в создании нормальной внутренней ссылочной структуры.
Google использует ссылки для обнаружения новых URL и рекомендует обычные HTML-ссылки <a href="...">. Кроме того, каждая важная страница должна иметь хотя бы одну внутреннюю ссылку с другой страницы сайта. Яндекс также строит обход сайта по ссылкам и рекомендует поддерживать понятную ссылочную структуру.
Если услуг немного, /category/ может содержать все карточки. Если услуг сотни или тысячи, лучше использовать:
/category/как постоянную страницу всех услуг категории;- подкатегории или пагинацию;
- обычные HTML-ссылки между листингами и карточками;
- XML Sitemap как дополнительный канал обнаружения URL.
Sitemap не заменяет внутреннюю перелинковку. Google прямо указывает, что sitemap помогает обнаруживать URL, но не гарантирует их сканирование или индексирование.
Как убрать скользящий дубль /category/ и страницы текущего месяца
Само наличие похожего контента по нескольким URL не является нарушением спам-политик Google. При обнаружении одинаковых или очень похожих страниц Google объединяет их в группу дублей и выбирает канонический URL. Страницы фильтрации прямо приводятся Google как типичный источник такого дублирования.
Проблема текущей архитектуры в другом: назначение /category/ постоянно меняется. В декабре она фактически становится копией /category/december/, в январе — /category/january/ и т. д.
Лучше развести интенты URL:
/category/ — постоянный полный каталог услуг;
/category/december/ — услуги, доступные в декабре;
/category/january/ — услуги, доступные в январе.
Тогда /category/ больше не является скользящим дублем месячной страницы.
Если месячные страницы имеют самостоятельную ценность для поиска — например, пользователь действительно ищет услуги, доступные именно в конкретном месяце, — их можно оставить индексируемыми и установить self-canonical. Канонизировать все месяцы на /category/ в таком случае не стоит: rel="canonical" предназначен для указания предпочтительной версии среди дублей или очень похожих документов и является сигналом консолидации.
Если же /january/, /february/ и остальные страницы существуют только как технические состояния интерфейсного фильтра и не нужны в поиске, архитектура должна быть другой. Google отдельно рекомендует ограничивать обход фасетных URL, которые не должны участвовать в поиске, и оставлять доступной обычную страницу листинга без фильтра со всеми объектами.
То есть сначала нужно определить статус месячных URL: самостоятельные посадочные страницы или просто фильтры. Смешивать эти два назначения не следует.
Рекомендуемая конфигурация
Для описанного сценария оптимальна следующая схема:
/category/отдаёт200 OK, имеет self-canonical и является постоянным каталогом категории.- Все важные карточки услуг доступны через обычные внутренние ссылки — непосредственно с категории либо через пагинацию и подкатегории.
- При открытии
/category/интерфейс автоматически показывает текущий месяц. - Пользователь может перейти к «Все услуги» и другим месяцам.
- Поисковые роботы получают тот же HTML, что и обычные пользователи.
/category/december/и другие месячные URL индексируются только тогда, когда они являются самостоятельными полезными посадочными страницами.- Все канонические карточки услуг добавляются в XML Sitemap.
После внедрения нужно проверить /category/, одну месячную страницу и несколько карточек услуг через URL Inspection в Google Search Console: посмотреть отрендеренный HTML и выбранный Google canonical. Для Яндекса аналогично проверить страницы в Вебмастере и убедиться, что робот видит ту же структуру URL и контента, что обычный посетитель.
Такая реализация решает обе исходные задачи без отдельной SEO-версии страницы: /category/ перестаёт ежемесячно копировать один из фильтров, а поисковые роботы получают постоянные внутренние пути до всех карточек услуг.