B2BPRO.KZ | Рекламное агентство в Алматы

Дубли страниц в 1С-Битрикс: параметры сортировки и пагинации, которые нужно закрыть от индексации

Обложка: Один раздел, двенадцать адресов. Полупрозрачные копии страниц и одна синяя с зеленой закладкой, лупа, 1С-Битрикс

Дубли страниц в 1С-Битрикс чаще всего дают GET-параметры: сортировка (sort, order), вид каталога, служебные метки вроде clear_cache и ссылка «Все» (SHOWALL_1). Их закрывают от индексации: для Google метатегом noindex или правилом в robots.txt, для Яндекса директивой Clean-param. Страницы пагинации PAGEN_1=2, 3 и дальше оставляют в индексе, и у каждой должен быть свой canonical.

Типичный случай: владелец интернет-магазина открывает Яндекс Вебмастер и видит, что в поиске 9 000 страниц, хотя товаров на сайте 700. Google Search Console показывает сотни адресов со статусом «Страница является копией». Позиции категорий плавают. Сайт при этом сломанным не выглядит: каталог работает, фильтры работают, сортировка по цене тоже. Просто каждая кнопка сортировки и каждый переключатель «плиткой / списком» создает новый адрес страницы с тем же содержимым, и поисковые роботы честно обходят их все.

Откуда в 1С-Битрикс берутся дубли страниц с параметрами в URL?

Дубли появляются, когда один и тот же список товаров открывается по разным адресам, отличающимся только хвостом после знака вопроса. Дубль страницы: это URL, содержимое которого совпадает с другой страницей сайта или почти не отличается от нее. GET-параметр: это пара «имя=значение» в адресе после символа «?», например ?sort=price.

Параметры добавляют компоненты каталога, шаблоны, которые доработал разработчик, и модули. Набор отличается от сайта к сайту, но на проектах на 1С-Битрикс чаще всего встречаются такие группы:

  • Сортировка. sort=price, order=asc, method=desc и похожие. Названия придумывает автор шаблона, поэтому их надо смотреть на своем сайте, а не копировать из чужого robots.txt.
  • Вид и количество. view=list, display=table, count=60. Товары те же, меняется только раскладка.
  • Постраничная навигация. В классических компонентах номер страницы передается параметром PAGEN_1, PAGEN_2 и так далее (цифра означает порядковый номер навигации на странице). Ссылка «Все» добавляет SHOWALL_1=1 и выводит весь раздел одной лентой. Возможность показа всех записей включается параметром show_all в методе постраничной навигации, это описано в документации 1С-Битрикс по CDBResult::NavStart.
  • Фильтр без ЧПУ. set_filter=Y, arrFilter_..., del_filter. Это результаты подбора по свойствам, их тысячи комбинаций.
  • Служебные параметры. clear_cache=Y, bitrix_include_areas=Y, back_url_admin, print=Y. Они попадают в ссылки, когда администратор работает в публичной части, и иногда утекают в поиск.
  • Метки рекламы и аналитики. utm_source, utm_campaign, ysclid, gclid.

Больше всего мусора дают первые две группы и служебные параметры. Сортировка из трех вариантов в двух направлениях, умноженная на два вида каталога, превращает одну категорию в двенадцать адресов. Если добавить пагинацию, каждая страница списка тоже размножится на двенадцать.

Чем вредят дубли, если товары и так в индексе?

Главный вред дублей в том, что робот тратит обход на копии, а поисковик сам выбирает, какую версию показывать. Яндекс прямо пишет в справке о директиве Clean-param: из-за большого количества страниц с незначащими параметрами робот медленнее обходит сайт, и важные изменения дольше попадают в результаты поиска.

В магазине это выглядит так: вы поменяли цены или добавили новую коллекцию, а в выдаче неделями висит старый сниппет. Категория «Кондиционеры» ранжируется то по чистому адресу, то по адресу ?sort=price&order=desc, и позиция скачет. Внешние ссылки и поведенческие сигналы размазываются по нескольким URL вместо одного. В Google часть основных страниц уходит в статус «Страница является копией, канонический вариант выбран Google, а не пользователем», и это значит, что поисковик не согласился с вашим выбором главной версии.

У казахстанских сайтов трафик идет и из Google, и из Яндекса, а правила у них разные: Clean-param понимает только Яндекс, а Google опирается на canonical, noindex и robots.txt. Настройка «под одного» оставляет дубли во втором поисковике.

Как найти параметры, которые плодят дубли на вашем сайте

Список параметров быстрее всего дает сам Яндекс Вебмастер: в разделе «Индексирование → Настройка GET-параметров» собраны все параметры, которые робот нашел на сайте. По справке Вебмастера о настройке GET-параметров, там же можно указать, учитывать параметр или нет, а изменения вступают в силу в течение недели.

Дальше проверку стоит делать в таком порядке:

  1. Выгрузите из Вебмастера список параметров и отметьте те, что не меняют содержимое страницы: сортировка, вид, служебные, метки.
  2. В Яндекс Вебмастере откройте «Страницы в поиске» и отфильтруйте исключенные и проиндексированные адреса по вхождению «?». Так видно, какие параметры уже попали в поиск.
  3. В Google Search Console откройте отчет «Индексирование страниц» и посмотрите статусы про копии и канонические страницы. Примеры адресов внутри статуса покажут, какой параметр дает больше всего копий.
  4. Пройдите сайт краулером (Screaming Frog, Netpeak Spider или аналог) и отсортируйте адреса по наличию «?». Краулер найдет параметры, до которых поисковики еще не добрались.
  5. Откройте исходный код трех типов страниц: раздел каталога, раздел с сортировкой, вторая страница пагинации. Проверьте, что выводится в <link rel="canonical"> и есть ли метатег robots.

Самое полезное обычно находится на пятом шаге. На проектах B2BPRO.KZ мы чаще всего видим один и тот же сбой: canonical на сайте есть, но шаблон подставляет в него текущий адрес целиком, вместе с ?sort=price. Тег на месте, но каждый дубль объявляет каноническим сам себя, и склейки не происходит.

Какие параметры закрывать и каким способом

Закрывать нужно все параметры, которые не меняют набор товаров на странице, а страницы пагинации и посадочные страницы фильтра с ЧПУ оставлять открытыми. Способ зависит от поисковика и от того, нужен ли этот адрес роботу для обхода.

Параметр Что меняет Google Яндекс
sort, order, method Порядок тех же товаров noindex или Disallow по шаблону Clean-param
view, display, count Раскладку списка canonical на чистый раздел или Disallow Clean-param
PAGEN_1=2, 3… Следующую порцию товаров Оставить в индексе, свой canonical Оставить открытыми
PAGEN_1=1 Ничего, это копия первой страницы 301 на раздел без параметра 301 на раздел без параметра
SHOWALL_1=1 Выводит весь раздел разом Отключить ссылку «Все» или noindex Отключить ссылку «Все» или Disallow
set_filter, arrFilter_… Подбор по свойствам Disallow или noindex Disallow
clear_cache, bitrix_include_areas, back_url_admin, print Ничего для посетителя Disallow Disallow
utm_*, ysclid, gclid Ничего, это метки canonical на адрес без меток Удаляет сам, при желании Clean-param

По сортировке позиция Google записана прямо: в руководстве Google по разбивке на страницы сказано, что варианты списка с фильтрами и сортировкой, например ?order=price, стоит закрыть метатегом robots с noindex или шаблоном URL в robots.txt.

По Яндексу важная деталь в той же справке о Clean-param. Disallow имеет приоритет над Clean-param: если адрес запрещен в Disallow, а параметр одновременно указан в Clean-param, страница просто не будет проиндексирована, и накопленные показатели на основной адрес не перейдут. Поэтому Яндекс советует не ставить Disallow на страницы, если задача только убрать из поиска варианты ссылок с GET-параметрами. Сюда же относятся метки: utm_source, utm_campaign, ysclid и другие параметры аналитики Яндекс может удалять автоматически, отдельное правило для них не требуется.

Теперь о том, как сочетать способы в Google. Файл robots.txt управляет обходом, а не показом в поиске. В общих сведениях Google о robots.txt сказано, что он не предназначен для запрета показа материалов в результатах поиска, для этого нужен noindex. Если адрес закрыт в Disallow, робот не откроет страницу и не увидит на ней ни noindex, ни canonical. Значит, на одном и том же адресе выбирают что-то одно: или запрет обхода, или метатег.

Почему страницы пагинации нельзя склеивать с первой страницей

Страницы ?PAGEN_1=2, ?PAGEN_1=3 содержат другие товары, поэтому это не дубли, и закрывать их или ставить canonical на первую страницу нельзя. Через них робот находит карточки товаров, до которых нет других ссылок.

Google в том же руководстве по пагинации пишет три вещи, которые прямо касаются сайтов на 1С-Битрикс:

  • у каждой страницы последовательности должен быть свой URL, и Google рассматривает каждую как отдельную;
  • первую страницу не используют как каноническую для остальных, каждой странице назначают ее собственный канонический адрес;
  • теги rel="next" и rel="prev" Google больше не использует, хотя другие поисковые системы могут их учитывать.

Отсюда практические правила. На второй странице canonical указывает на /catalog/kondicionery/?PAGEN_1=2, а не на /catalog/kondicionery/. Ссылки на следующие страницы выводятся обычным тегом <a href>, а не только через кнопку «Показать еще» на JavaScript. Адрес ?PAGEN_1=1 полностью повторяет первую страницу, поэтому ссылка на «1» в навигации должна вести на чистый адрес раздела, а сам ?PAGEN_1=1 лучше перенаправить 301-редиректом.

Комбинации пагинации с сортировкой, например ?PAGEN_1=3&sort=price, наследуют правило сортировки: для Google их закрывает тот же шаблон, что и sort, а для Яндекса Clean-param отбрасывает sort и оставляет ?PAGEN_1=3. Описание и заголовок второй и следующих страниц можно сделать одинаковыми: Google отмечает, что рекомендация давать страницам уникальные названия не касается страниц с результатами списка.

Как прописать правила в robots.txt на 1С-Битрикс

В robots.txt нужны две секции: общая для всех роботов с запретом сортировки и служебных параметров, и отдельная для Яндекса, где сортировка и вид убраны через Clean-param, а не через Disallow. Справка Яндекса поясняет, что если для робота Яндекса есть своя секция, строку User-agent: * он игнорирует, поэтому все правила для него перечисляют в одном блоке.

Пример для каталога в разделе /catalog/. Имена параметров здесь условные, подставьте те, что нашли на своем сайте на предыдущем шаге:

User-agent: *
Disallow: /bitrix/
Disallow: /*?*sort=
Disallow: /*?*order=
Disallow: /*?*view=
Disallow: /*SHOWALL_
Disallow: /*set_filter=
Disallow: /*clear_cache=
Disallow: /*bitrix_include_areas=
Disallow: /*back_url_admin=
Disallow: /*print=

User-agent: Yandex
Disallow: /bitrix/
Disallow: /*SHOWALL_
Disallow: /*set_filter=
Disallow: /*clear_cache=
Disallow: /*bitrix_include_areas=
Disallow: /*back_url_admin=
Disallow: /*print=
Clean-param: sort&order&view /catalog/

Sitemap: https://example.kz/sitemap.xml

Синтаксис Clean-param такой: сначала через символ «&» перечисляются параметры, которые роботу не нужно учитывать, затем префикс пути, к которому применяется правило. Регистр учитывается, длина одного правила ограничена 500 символами. Если префикс не указать, правило действует на весь сайт.

В примере намеренно нет запрета PAGEN_: пагинацию закрывать не нужно. Нет и Disallow: /*?, то есть запрета на все адреса с параметрами разом. Такое правило встречается в шаблонных robots.txt, и оно закрывает заодно пагинацию, посадочные страницы и все, что владелец сайта захочет продвигать с параметром.

Редактировать файл на 1С-Битрикс можно в административной части через модуль «Поисковая оптимизация», где есть генератор robots.txt со стартовым набором правил, или напрямую в корне сайта. После правки проверьте файл в двух местах: в Яндекс Вебмастере инструментом «Анализ robots.txt» (туда можно вставить конкретные адреса и посмотреть, разрешены они или нет) и в отчете о файле robots.txt в Google Search Console.

Canonical на 1С-Битрикс: что проверить в шаблоне

Canonical: это тег <link rel="canonical" href="..."> в коде страницы, которым сайт сообщает поисковику, какой адрес считать главной версией. Для страниц с параметрами в 1С-Битрикс он должен собираться из чистого адреса раздела, а не копировать текущий URL целиком.

Правильная схема для каталога выглядит так:

  • раздел без параметров указывает canonical сам на себя;
  • раздел с sort, order, view или метками указывает на раздел без параметров;
  • страница ?PAGEN_1=N указывает сама на себя, без параметров сортировки и меток;
  • карточка товара, доступная из нескольких разделов, указывает на один выбранный адрес.

Если у вас каталог на 1С-Битрикс ведет одна команда, а SEO другая, договоритесь, кто отвечает за логику canonical. Правило «какие параметры вырезать» знает SEO-специалист, а реализует его разработчик в шаблоне компонента или в обработчике на уровне сайта. Частая ошибка второй стороны: canonical прописали в шаблоне раздела, но компонент кешируется, и в кеш попадает адрес первого посетителя, который зашел с параметром. Проверяйте результат не на одной странице, а выборкой из 20-30 адресов краулером.

Подробно о том, как найти копии и чем отличаются 301-редирект, canonical и Clean-param, мы писали в статье про дубли страниц и canonical. Для этой статьи достаточно помнить, что canonical для Google остается рекомендацией, а не командой, и справка Google о нормализации URL описывает его как один из сигналов наряду с редиректами и картой сайта. Поэтому в sitemap.xml должны попадать только канонические адреса, без сортировок и меток.

Пример: каталог на 1С-Битрикс с 700 товарами

Пример условный, цифры подобраны для наглядности. Магазин климатической техники в Алматы: 28 разделов каталога, в среднем по 3 страницы пагинации в разделе, всего около 84 полезных адресов списков и 700 карточек.

Шаблон каталога выводит сортировку по цене, популярности и названию в двух направлениях (шесть вариантов), переключатель «плитка / список» (два варианта) и ссылку «Все». Каждый раздел и каждая его страница доступны в 6 × 2 = 12 вариантах, плюс SHOWALL. Получается около 84 × 12 + 28 = 1 036 адресов списков вместо 84. Добавьте фильтр без ЧПУ, и счет идет на тысячи.

Порядок исправления в таком проекте:

  1. Список параметров из Вебмастера и краулера: нашли sort, order, view, PAGEN_1, SHOWALL_1, set_filter, clear_cache.
  2. Robots.txt переписали по схеме из двух секций, как в примере выше.
  3. Разработчик поправил шаблон: canonical собирается без sort, order, view, на страницах пагинации остается PAGEN_1.
  4. Ссылку «Все» убрали из навигации, адреса ?PAGEN_1=1 перенаправили 301-редиректом на раздел.
  5. Из sitemap.xml убрали все адреса с параметрами.
  6. Через две-три недели сверили в Вебмастере число страниц в поиске и в Search Console статусы копий.

Что сделать до запуска нового каталога, чтобы не разгребать дубли потом

Дешевле всего заложить правила еще при разработке, до первого обхода роботами. В техническое задание на каталог стоит записать:

  • сортировка и вид меняются без перезагрузки страницы или с параметрами из заранее согласованного списка;
  • canonical собирается по правилу, а не копирует текущий адрес;
  • пагинация выводится ссылками <a href>, ссылка на первую страницу ведет на чистый адрес раздела;
  • ссылка «Все» отключена или закрыта от индексации;
  • посадочные страницы фильтра, которые нужно продвигать, получают ЧПУ, свой title и описание, а остальные комбинации фильтра закрыты;

Если фильтр по свойствам на вашем сайте важен для продвижения, это отдельная большая тема, мы разбирали ее в материале о технических особенностях SEO интернет-магазина на 1С-Битрикс. А если каталог только проектируется или его пора переделывать, такие правила проще всего включить в разработку сайта под ключ, чем исправлять после запуска.

Сама по себе чистка дублей редко дает заметный рост, зато после нее начинают работать тексты, ссылки и структура разделов, которые раньше терялись среди копий. Позиции категорий перестают скакать, новые товары быстрее попадают в выдачу. Если хотите, чтобы мы проверили ваш сайт на 1С-Битрикс и составили список параметров и правил под Google и Яндекс, закажите SEO-аудит сайта: в нем мы разбираем индексацию, дубли и canonical на реальных адресах вашего каталога.

Частые вопросы

Нужно ли закрывать от индексации страницы пагинации PAGEN_1 в Битриксе?

Нет, страницы PAGEN_1=2 и дальше закрывать не нужно, потому что на них другие товары и через них робот находит карточки. У каждой такой страницы должен быть свой canonical, а не ссылка на первую страницу. Закрыть стоит только адрес PAGEN_1=1, который повторяет первую страницу: его лучше перенаправить 301-редиректом на чистый адрес раздела.

Можно ли закрыть сортировку в Битриксе одной строкой Disallow для всех поисковиков?

Можно, но для Яндекса это не лучший вариант. Яндекс рекомендует для незначащих параметров директиву Clean-param, потому что она передает накопленные показатели основному адресу, а Disallow имеет приоритет и просто исключает страницу. Поэтому сортировку в общей секции закрывают через Disallow для Google, а в отдельной секции User-agent: Yandex указывают Clean-param без Disallow на те же параметры.

Понимает ли Google директиву Clean-param?

Нет, Clean-param поддерживает только Яндекс. Для Google незначащие параметры убирают другими способами: canonical на адрес без параметров, метатег robots с noindex или шаблон Disallow в robots.txt. Важно не сочетать Disallow и noindex на одном адресе: если обход запрещен, Google не откроет страницу и не увидит ни noindex, ни canonical.

Сколько времени дубли выпадают из поиска после исправления?

Настройки GET-параметров в Яндекс Вебмастере, по справке Яндекса, вступают в силу в течение недели. Выпадение копий из индекса идет дольше и зависит от частоты обхода сайта: на магазине из нескольких сотен товаров разница обычно заметна через несколько недель. Ускоряет процесс чистый sitemap.xml без параметров и правильный canonical на всех вариантах страниц.

Как узнать, какие GET-параметры есть на моем сайте на 1С-Битрикс?

Быстрее всего открыть в Яндекс Вебмастере раздел «Индексирование → Настройка GET-параметров»: там список всех параметров, которые нашел робот. Дополнительно стоит пройти сайт краулером и посмотреть в Google Search Console статусы про копии страниц. Названия параметров сортировки и вида у каждого шаблона свои, поэтому чужой robots.txt без проверки копировать нельзя.

Прокрутить вверх