Проверка структуры сайта: вложенность и путь от главной до товара

Проверка структуры сайта: вложенность и путь от главной до товара
Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога seo-prodvizhenie-biznesa.ru о продвижении и доработке сайтов.

Проверка структуры сайта начинается не с красивой схемы в блокноте, а с одного вопроса: за сколько кликов от главной живой человек и робот доходят до конкретного товара. Если ответ — «за пять, если заранее знать, куда нажимать», часть каталога живёт вне поиска, и переписанные тексты этого не исправят. Глубина страницы — это про то, доберётся ли до неё робот на очередном визите и останется ли у него после этого ресурс на остальные адреса.

Что такое уровень вложенности и почему слэши в адресе тут ни при чём

Уровень вложенности — количество кликов по внутренним ссылкам, за которое можно попасть на страницу с главной кратчайшим путём. Главная — первый уровень, раздел из меню — второй, товар, до которого идти через раздел и подраздел, — четвёртый.

Самая частая ошибка при аудите: глубину считают по количеству сегментов в адресе. Адрес /katalog/nasosy/skvazhinnye/nasos-model-a/ выглядит как четвёртый уровень, но если ссылка на товар стоит в блоке «Хиты продаж» на главной, реальная глубина — второй. И наоборот: короткий /nasos-model-a/ ничего не значит, если попасть на него можно только через три страницы пагинации.

Поисковые системы работают со ссылочным графом, а не со строкой адреса. Робот берёт список известных адресов, обходит их, извлекает ссылки, ставит новые адреса в очередь. Чем дальше страница в этом графе, тем позже она попадает в очередь и тем ниже её приоритет при следующем обходе. Практическое следствие: адреса можно оставить логичными и глубокими, но путь в кликах обязательно сократить. Общие принципы разбора дерева разделов я описывал в материале Структура сайта — здесь речь именно про измерение и перестройку глубины.

Три способа измерить глубину и что каждый из них показывает

Первый способ — краулер. Screaming Frog SEO Spider, Netpeak Spider, SiteAnalyzer обходят сайт от стартового адреса и выводят глубину отдельной колонкой: в Screaming Frog это Crawl Depth, в Netpeak Spider — «Глубина». Запускать нужно строго с главной и с включённым выполнением JavaScript, если меню или листинг подгружаются скриптом: без рендеринга краулер не увидит половину ссылок и покажет фальшиво глубокую структуру.

Второй способ — Яндекс.Вебмастер, раздел «Индексирование → Статистика обхода»: какие адреса робот реально скачивал и с каким кодом ответа. Страницы, которые есть в каталоге, но которых нет в обходе за два-три месяца, и есть кандидаты на «слишком глубоко». Ещё полезнее «Страницы в поиске» с фильтром «Исключённые»: причина «Недостаточно качественная» на карточках часто означает, что робот дошёл до них один раз, ничего не понял из-за пустого описания и больше не возвращался.

Третий способ — логи сервера, самый точный источник. В access-логе виден каждый запрос робота: user-agent, время, код ответа. Выгрузите строки с YandexBot и Googlebot за месяц, сгруппируйте по разделам и сравните долю запросов к каталогу с долей запросов к сортировкам, поиску и фильтрам. У большинства магазинов, которые я смотрю, служебные адреса съедают больше половины обхода. Как распределяется этот ресурс, разобрано в статье Краулинговый бюджет: что это и почему Яндекс не обходит половину вашего сайта.

Почему на четвёртом-пятом уровне робот бывает редко

Первая причина — очередь обхода. Робот выделяет сайту ограниченное число запросов в сутки и сортирует адреса по приоритету, где глубина в графе — один из факторов наряду с частотой обновления и внешними ссылками. Пятый уровень стабильно оказывается в хвосте очереди.

Вторая — внутренний вес: он делится между всеми исходящими ссылками страницы. Если раздел ссылается на 200 товаров, каждому достаётся сотая доля того, что было у раздела, и к пятому уровню остаются крохи. Третья — поведение людей: до страницы в четыре клика доходит меньшая часть посетителей, поведенческие сигналы хуже, шансы на переобход ниже.

Четвёртая — цикличность. Редкий обход означает устаревший снимок в индексе, задержку в передаче цены и наличия, устаревший сниппет и падение CTR. Круг замыкается. Отдельно эту зависимость я разбирал в материале Страница на пятом уровне вложенности для Яндекса почти не существует.

Важно: пятый уровень не приговор. Если на страницу ведут ссылки из блоков «Похожие товары», из статей блога, из HTML-карты, фактическая глубина падает до второго-третьего даже при длинном пути по меню. Поэтому перелинковка — инструмент управления глубиной, а не только способ передать анкор.

Уровень Что обычно лежит Как ведёт себя робот Что делать при аудите
1 — главная Витрина, ссылки на разделы Чаще всего, иногда несколько раз в сутки Ссылки на все верхнеуровневые разделы, а не на пять избранных
2 — разделы и услуги Категории каталога, страницы услуг Регулярно, раз в несколько дней Здесь должны стоять коммерческие посадочные, а не технические списки
3 — подразделы Подкатегории, карточки из блоков «Хиты», популярные фильтры Стабильно, но приоритет ниже главной У подразделов свой текст, без дублирования родителя
4 — масса карточек Товары глубоких подразделов, вторые-третьи страницы пагинации Выборочно, часть адресов пропускает месяцами Поднять перелинковкой и хлебными крошками
5 и глубже Комбинации фильтров, хвост пагинации, архивы, внутренний поиск Редко и нерегулярно, многие адреса ни разу Поднять, склеить каноникалом или закрыть от индексации

Разделы без товаров и дубли категорий

Пустые разделы. Категория создана, в меню выведена, товаров в ней ноль или один. Для человека это тупик, для робота — страница без содержимого, которая собирает на себя внутренний вес; в Вебмастере она всплывает со статусом «Малоценная или маловостребованная страница». Если товары появятся скоро — уберите раздел из меню и закройте метатегом noindex; если пустует давно — удалите и поставьте 301-редирект на родительскую категорию. Частая ошибка: раздел просто удаляют, страница отдаёт 404, а ссылки на неё остаются в меню и в хлебных крошках, и робот продолжает тратить обход на битые адреса.

Дубли категорий. Один набор товаров доступен по нескольким адресам: через основное дерево и через ветку по бренду — например, /katalog/nasosy/grundfos/ и /brendy/grundfos/nasosy/. Содержимое совпадает, title часто тоже, и поисковик сам выбирает версию — нередко ту, которую вы не продвигаете.

Решение зависит от спроса. Есть частотность в Вордстате по связке «бренд + категория» — оставляйте оба адреса, но сделайте их разными: свой title, заголовок, вводный текст, порядок товаров. Спроса нет — оставьте один адрес, второй закройте через rel="canonical".

Отдельный подвид — первая страница пагинации по адресу с ?page=1 или /page/1/: чистый дубль, который обязан отдавать 301 на адрес без параметра.

Хлебные крошки как способ поднять уровень

Механика работает не в ту сторону, о которой обычно думают. Крошки на карточке ведут вверх — на подраздел, раздел и главную, и путь до карточки не сокращают. Но они выравнивают вес внутри дерева: карточка возвращает часть веса родителям, родители укрепляются и лучше передают вес вниз следующим карточкам. На каталоге в тысячи страниц этот обратный поток заметно меняет распределение.

Технические требования:

  • Крошки — обычные HTML-ссылки <a href>, а не элементы, которые дорисовывает скрипт. Отключите JavaScript и посмотрите, остались ли они.
  • Последний элемент — текущая страница — ссылкой быть не должен.
  • Разметка BreadcrumbList по schema.org, в формате JSON-LD или микроданными. Яндекс использует её для пути в сниппете, Google — для строки навигации в выдаче.
  • Путь в крошках совпадает с фактическим путём по каталогу: если товар лежит в трёх категориях, выберите одну основную и привяжите крошки к ней.
  • На страницах фильтрации крошки не должны обрываться на разделе — доведите их до конкретного фильтра, если он открыт для индексации.

Подробный разбор с примерами разметки — в статье Хлебные крошки — это не украшение, а карта сайта для робота Яндекса.

Второй инструмент того же класса — HTML-карта сайта: страница со ссылками на все разделы, доступная из футера. Она сокращает путь до любого подраздела до двух кликов; для гигантских каталогов её делают многоуровневой. Чем она отличается от sitemap.xml, описано в материале HTML карта сайта.

Фильтры, пагинация и внутренний поиск: как они плодят уровни

Фильтры. Каждое сочетание параметров даёт новый адрес. Три фильтра по десять значений — тысяча комбинаций, четыре фильтра — десять тысяч. Все они висят на четвёртом-пятом уровне и содержат подмножества одного списка товаров. Робот честно обходит их, пока не упрётся в лимит, и до реальных карточек не доходит.

Стратегия — не «закрыть всё», а разделить на три группы. Первая: комбинации со спросом, обычно одиночные значения — бренд, размер, мощность. Их открывают для индексации, дают свой title, H1 и вводный текст и включают в sitemap.xml: это посадочные страницы. Вторая: комбинации без спроса — rel="canonical" на чистый адрес раздела. Третья: бесконечные конструкции — сортировки, диапазоны цен произвольного шага, пересечения от трёх параметров: запрет в robots.txt плюс снятие ссылок из разметки.

Порядок важнее самих правил. Закроете всё в robots.txt сразу — робот перестанет читать эти страницы и не увидит rel="canonical": склейки не произойдёт, адреса застрянут в индексе надолго. Сначала каноникал, потом запрет. Для параметров, которые не меняют содержимое (метки, идентификаторы сессий), в Яндексе есть Clean-param — надёжнее Disallow по маске. Разбор генераторов дублей — в статье Дубли, которые вы не видите: пагинация, фильтры, UTM и сессионные параметры.

Пагинация. Каждая следующая страница листинга — плюс один уровень: раздел на пятнадцать страниц по 24 товара означает, что последние товары лежат на глубине «раздел + 14 кликов». Лечится тремя приёмами: больше товаров на странице, номера страниц с шагом (1, 2, 3 … 8 … 15), блок ссылок на подразделы, дробящий большой листинг. Атрибуты rel="next" и rel="prev" Google перестал использовать как сигнал индексации в 2019 году, Яндекс их тоже не считает обязательными — рабочее решение другое: самоканоникал на каждой странице пагинации плюс номер страницы в title. Подробности — в материале Пагинация без rel-next: как Яндекс обходит каталог из 500 страниц.

Внутренний поиск. Адреса вида /search/?q=... порождаются бесконечно: их закрывают в robots.txt без исключений и убирают ссылки на популярные запросы из подвала.

Ленивая подгрузка. Кнопка «Показать ещё» без отдельных адресов оставляет часть товаров без ссылок в HTML — таких страниц просто нет в графе. Решение: дублировать прокрутку обычной пагинацией со ссылками, доступной без JavaScript.

Что перестраивать в первую очередь

Первое — убрать мусор из обхода: закрыть внутренний поиск, сортировки, сравнение и корзину. Правок в шаблонах не требует, ресурс робота освобождается за неделю-две. Второе — починить битые ссылки и цепочки редиректов в меню, крошках и листингах: ссылка на 404 или на цепочку из двух-трёх 301 — потраченный запрос робота. Третье — поднять глубину перелинковкой: ссылки на популярные подразделы с главной, блок «Смотрите также» в карточках, ссылки из статей блога на коммерческие страницы. Это меняет граф, не трогая дерево каталога.

Четвёртое — фильтры: те, у которых есть спрос, превратить в посадочные, остальные склеить. Работы здесь больше всего, но и отдача заметнее. Пятое, самое дорогое, — перекроить дерево категорий: к этому переходят, только когда предыдущие шаги упёрлись в потолок, потому что перекройка означает смену адресов, массовые 301-редиректы и месяцы на восстановление.

Что проверяем Чем Ориентир нормы Признак проблемы
Глубина коммерческих страниц Краулер, колонка Crawl Depth Разделы — 2, карточки — 3–4 Больше 10% карточек глубже четвёртого уровня
Адреса в обходе Логи сервера, фильтр по YandexBot Больше половины запросов — к товарам и разделам Обход уходит на параметры и сортировки
Пустые разделы Краулер и выгрузка каталога из CMS Ноль разделов без товаров в меню Категории с одним товаром в основном меню
Дубли категорий Сравнение title и H1 в отчёте краулера Все title уникальны Совпадающие title у разделов из разных веток
Хлебные крошки Просмотр HTML без JavaScript, валидатор разметки Есть глубже второго уровня, размечены BreadcrumbList Рисуются скриптом или ведут не в ту категорию
Пагинация Краулер, просмотр листинга Не больше 8–10 страниц, есть номера Только кнопка «далее», листинги на 20+ страниц
Страницы фильтров Адреса с параметрами из логов и Вебмастера Открыты только фильтры со спросом, у них свои title Тысячи адресов с параметрами и одинаковыми title
Sitemap против обхода Вебмастер, «Статистика обхода», sitemap.xml Почти все адреса обойдены за квартал Часть адресов из sitemap не обходилась ни разу

Когда перестраивать структуру не нужно

Сайт-визитка на 15–30 страниц. Здесь всё и так на втором уровне. Проблема не в структуре, а в том, что под каждый спрос нет отдельной посадочной: нужно расширять семантику, а не строить дерево ради дерева.

Сайт под фильтром или с проблемами доступности. Если страницы отдают 5xx, сервер отвечает по несколько секунд или наложен фильтр, перестройка ничего не изменит: причина не в глубине. Сначала техника, потом архитектура.

Каталог с описаниями поставщика. Карточку можно вывести хоть на второй уровень — она не будет ранжироваться из-за неуникального содержимого. Глубина здесь сопутствующий фактор, а не причина.

Предложение «сделать все страницы на втором уровне». Плоская структура на большом каталоге — тысячи ссылок в сквозном меню или футере: вес размазывается тонким слоем, роботу хуже, человеку невозможно ориентироваться. Она работает до нескольких сотен страниц, дальше нужна иерархия с перелинковкой.

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

Какая глубина считается допустимой? Для коммерческих страниц — не глубже третьего-четвёртого уровня, разделы каталога и страницы услуг — на втором. Универсального порога нет, ориентируйтесь на свои логи и статистику обхода.

Глубина считается по адресу или по кликам? По кликам. Сегменты в адресе на приоритет обхода напрямую не влияют: длинный адрес с коротким путём в кликах — нормально, короткий адрес за пятнадцатью страницами пагинации — проблема.

Можно ли сократить глубину сквозным меню со всеми категориями? До предела. Если категорий 30–50, выпадающее меню действительно поднимает все разделы на второй уровень. Если их несколько сотен, меню превращается в шум: вес дробится, а сквозные ссылки поисковики учитывают с понижающим коэффициентом.

Помогает ли sitemap.xml, если страница лежит глубоко? Помогает роботу узнать об адресе, но не заменяет ссылки: карта сообщает о существовании страницы, а вес и приоритет дают внутренние ссылки. Страница только из sitemap обычно попадает в индекс, но ранжируется слабо.

Что делать со старым каталогом, где всё на пятом уровне? Не начинать с перекройки адресов. Сначала блоки перелинковки, хлебные крошки, HTML-карта, чистка мусорных адресов из обхода. Часто этого хватает, чтобы фактическая глубина упала до третьего уровня без единого редиректа.

Как быстро видно результат? Изменения в статистике обхода — через две-четыре недели, в индексе — через месяц-полтора. Позиции подтягиваются на втором-третьем месяце и только если у страниц есть нормальное содержимое.

Коротко

  • Глубина считается в кликах от главной, а не по числу сегментов в адресе.
  • Проверять тремя источниками: краулер показывает граф, Вебмастер — что робот знает, логи — куда он ходит.
  • На четвёртом-пятом уровне робот бывает редко из-за очереди обхода и дробления веса; перелинковка возвращает такие страницы на третий уровень без правки адресов.
  • Пустые разделы — удалить с 301-редиректом, дубли категорий — развести по спросу или склеить каноникалом.
  • Фильтры делят на три группы: со спросом — посадочные, без спроса — каноникал, бесконечные — запрет в robots после того, как каноникал сработал.
  • Перекройка дерева категорий — последний шаг: сначала чистка обхода, битые ссылки, перелинковка и фильтры.

Если непонятно, с какого шага начинать, а цена ошибки — месяцы просадки, разберите структуру на своих отчётах: запишитесь на разбор структуры сайта на консультации, посмотрим выгрузку краулера и статистику обхода. Нужен не разбор, а работа под ключ — этим занимаюсь как SEO-продвижение сайта без посредников, в SEO с 2005 года.

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

Комментарии

Викентий Шумарин

Прогнал каталог Screaming Frog, получил 8400 адресов, из них 6100 глубже четвёртого уровня. Смотрю — это почти всё страницы с параметрами сортировки. Их вообще считать в статистике глубины или сразу выкидывать из отчёта?

Анатолий Кузнецов автор

Считать отдельно от товаров, иначе картина будет бессмысленной. Сделайте в отчёте два среза: первый — только адреса без параметров, это ваша реальная структура; второй — адреса с параметрами, это оценка масштаба мусора. Первый срез покажет, насколько глубоко лежат карточки, второй — сколько обхода вы теряете. Дальше сверьте второй срез с логами: если YandexBot действительно ходит по сортировкам, значит, на них есть ссылки в HTML, и первое дело — снять эти ссылки или отдать их через параметр, который закрыт директивой Clean-param. Пока ссылки стоят в разметке, никакой запрет в robots полностью проблему не снимет, потому что робот всё равно будет складывать адреса в очередь.

Пелагея Дробышева

У нас магазин на WooCommerce, категорий больше двухсот. Разработчик предлагает вывести все в мегаменю, чтобы всё стало вторым уровнем. По статье получается, что так делать не стоит?

Анатолий Кузнецов автор

На двухстах категориях мегаменю уже работает против вас. Каждая страница начнёт отдавать двести с лишним сквозных ссылок, вес размажется, а сквозные ссылки поисковики учитывают с понижающим коэффициентом — то есть эффект будет меньше ожидаемого при полном наборе минусов. Рабочий компромисс: в меню выводите верхний уровень и по три-пять самых ходовых подкатегорий в каждом, а полный список отдайте через HTML-карту сайта, ссылку на неё поставьте в футер. Тогда любой подраздел достижим за два клика, но сквозных ссылок остаётся разумное количество. И отдельно проверьте, что мегаменю отдаётся в исходном HTML, а не собирается скриптом после загрузки — иначе робот его просто не увидит и все расчёты окажутся неверными.

Ростислав Кувалдин

Добавили хлебные крошки на карточки товаров с разметкой JSON-LD. В сниппете Яндекса путь так и не появился, прошло три недели. Разметка валидатор проходит.

Онисим Балакирев

Логи сервера у хостера отдаются только за последние семь дней. Этого хватит, чтобы понять, куда уходит обход, или надо настраивать отдельное хранение?

Феврония Барышникова

Не поняла момент про порядок: почему нельзя сразу закрыть фильтры в robots.txt, если мы всё равно не хотим видеть их в поиске?

Анатолий Кузнецов автор

Потому что запрет в robots.txt мешает роботу скачать страницу, а не выкинуть её из индекса. Если адрес уже проиндексирован и вы его закрываете, робот перестаёт заходить и никогда не увидит указание rel=»canonical», которое на этой странице стоит. Склейки не происходит, адрес зависает в индексе неопределённо долго, иногда с пометкой о том, что содержимое недоступно из-за запрета. Поэтому порядок такой: сначала ставите канонические адреса и убираете ссылки на мусорные комбинации из разметки, ждёте, пока адреса выпадут из поиска — обычно это несколько недель, — и только потом закрываете директорию или маску в robots.txt, чтобы робот больше не тратил на неё запросы. Для меток и идентификаторов сессий в Яндексе лучше сразу использовать Clean-param, он как раз рассчитан на склейку по параметру.

Лукерья Загоскина

Интересно про пагинацию. У нас в разделе 34 страницы листинга, товаров около восьмисот. Увеличить количество товаров на странице до сотни — это не убьёт скорость загрузки?

Анатолий Кузнецов автор

Скорость просядет, если выводить сто карточек с полными изображениями сразу. Поэтому увеличение количества делают вместе с отложенной загрузкой картинок через атрибут loading=»lazy» — тогда браузер грузит только видимую часть, а в HTML ссылки на все товары присутствуют, и робот их видит. Но 34 страницы — это в первую очередь сигнал, что раздел слишком крупный и его пора дробить на подкатегории по реальному спросу. Восемьсот товаров почти всегда делятся на пять-восемь осмысленных групп, у каждой из которых есть своя частотность. Это одновременно и сокращает пагинацию, и даёт новые посадочные страницы под средние запросы. Так что порядок такой: сначала дробление, потом настройка количества на странице, и только в последнюю очередь — правки самой пагинации.

Тихон Бердников

Битрикс из коробки создаёт для товара сразу два адреса: через раздел и через общий список. Каноникал стоит на вариант через раздел, но в поиске висят оба. Смотреть в сторону редиректа?

Домна Ратникова

Спасибо за таблицу с чеклистом, забрала целиком. Отдельно ценно, что расписан порядок работ — обычно в таких статьях дают список проблем без приоритетов, и непонятно, за что хвататься первым.

Клим Заозёрский

А как быть с блогом? У нас статьи лежат по адресам с категорией и годом, получается третий-четвёртый уровень, плюс пагинация архива на 40 страниц. Старые материалы робот не трогает вообще.

Анатолий Кузнецов автор

Классическая ситуация для блогов: единственный путь до старой статьи — прокрутить сорок страниц архива, и робот туда не идёт. Менять адреса ради уровня не надо, это дорого и рискованно. Работает другое: блок «Читайте также» в конце каждой статьи с ручным или полуручным подбором по теме, ссылки из свежих материалов на старые, отдельная страница-рубрикатор со списком всех статей раздела. Архивы по датам и по авторам при этом закройте метатегом noindex — они дублируют содержимое рубрик и съедают обход. После такой перелинковки старые статьи оказываются в двух-трёх кликах от свежих, которые робот и так посещает часто, и обход до них доходит сам.

Савелий Тумановский

Проверил через краулер: 40% карточек на пятом уровне. Но в Вебмастере большинство из них в поиске. Значит ли это, что проблемы нет и можно не трогать?

Агафья Мостовая

Вопрос про пустые разделы: у нас сезонный магазин, зимой половина категорий пустеет, летом наполняется обратно. Каждый раз удалять и восстанавливать с редиректами — так себе идея.

Никанор Плещеев

Сделал HTML-карту сайта на 300 ссылок, поставил в футер. Через месяц в статистике обхода видно, что робот стал заходить на подразделы, до которых раньше не доходил. Дёшево и работает.

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