Дубли страниц в 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-параметров, там же можно указать, учитывать параметр или нет, а изменения вступают в силу в течение недели.
Дальше проверку стоит делать в таком порядке:
- Выгрузите из Вебмастера список параметров и отметьте те, что не меняют содержимое страницы: сортировка, вид, служебные, метки.
- В Яндекс Вебмастере откройте «Страницы в поиске» и отфильтруйте исключенные и проиндексированные адреса по вхождению «?». Так видно, какие параметры уже попали в поиск.
- В Google Search Console откройте отчет «Индексирование страниц» и посмотрите статусы про копии и канонические страницы. Примеры адресов внутри статуса покажут, какой параметр дает больше всего копий.
- Пройдите сайт краулером (Screaming Frog, Netpeak Spider или аналог) и отсортируйте адреса по наличию «?». Краулер найдет параметры, до которых поисковики еще не добрались.
- Откройте исходный код трех типов страниц: раздел каталога, раздел с сортировкой, вторая страница пагинации. Проверьте, что выводится в
<link rel="canonical">и есть ли метатег robots.
Самое полезное обычно находится на пятом шаге. На проектах B2BPRO.KZ мы чаще всего видим один и тот же сбой: canonical на сайте есть, но шаблон подставляет в него текущий адрес целиком, вместе с ?sort=price. Тег на месте, но каждый дубль объявляет каноническим сам себя, и склейки не происходит.
Какие параметры закрывать и каким способом
Закрывать нужно все параметры, которые не меняют набор товаров на странице, а страницы пагинации и посадочные страницы фильтра с ЧПУ оставлять открытыми. Способ зависит от поисковика и от того, нужен ли этот адрес роботу для обхода.
| Параметр | Что меняет | Яндекс | |
|---|---|---|---|
| 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. Добавьте фильтр без ЧПУ, и счет идет на тысячи.
Порядок исправления в таком проекте:
- Список параметров из Вебмастера и краулера: нашли
sort,order,view,PAGEN_1,SHOWALL_1,set_filter,clear_cache. - Robots.txt переписали по схеме из двух секций, как в примере выше.
- Разработчик поправил шаблон: canonical собирается без
sort,order,view, на страницах пагинации остаетсяPAGEN_1. - Ссылку «Все» убрали из навигации, адреса
?PAGEN_1=1перенаправили 301-редиректом на раздел. - Из sitemap.xml убрали все адреса с параметрами.
- Через две-три недели сверили в Вебмастере число страниц в поиске и в 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 без проверки копировать нельзя.
