Навигация, дружественная поиску
Навигация, дружественная поиску — это набор путей, по которым робот может дойти до каждой нужной страницы и не заблудиться в лишних. Задокументировано здесь меньше, чем принято считать: ссылка работает только в определённой форме, адреса с «#» робот не разбирает надёжно, а скорость скриптов не имеет порога, о котором пишут в чек-листах. В этом уроке — что подтверждено, где ловушки и что делать с фильтрами и пагинацией.
Опираться будем на основы JavaScript SEO и на руководство по фасетной навигации.
Что делает переход путём
Правило из документации: Google, как правило, может обойти ссылку, только если это HTML-элемент a с атрибутом href. Обработка идёт буквально: Googlebot разбирает ответ и берёт адреса из атрибута href в HTML-ссылках. Кнопка со скриптом, меню на onclick и карточка, которая реагирует на клик, но не содержит ссылки, путей не создают.
Про JavaScript в целом сказано спокойно: Google выполняет JavaScript с помощью evergreen-версии Chromium, поэтому историческая формула «JS невидим для робота» устарела. Но рендеринг — отдельная фаза после обхода, а Google Search не рендерит JavaScript с заблокированных страниц. Подробнее о цепочке — в уроке про обнаружение и обход.
Адреса с «#» и одностраничные приложения
Отдельное предупреждение для приложений с клиентской маршрутизацией: не используйте фрагменты для загрузки разного содержимого — Googlebot не может надёжно разрешить такие адреса; вместо этого применяйте History API. Ссылка вида href=«#/products» — плохая практика. В руководстве по структуре URL тот же вывод: если вы меняете содержимое с помощью JavaScript, используйте History API.
Что робот не пройдёт
| Элемент | Результат | Что делать |
|---|---|---|
| Ссылка a с href | Путь есть | Основа навигации |
| Меню и кнопки на onclick без href | Пути нет | Добавить настоящую ссылку |
| Маршруты на «#» | Адреса не разрешаются надёжно | History API и отдельные адреса |
| Контент после ввода данных в форму или после входа в аккаунт | Обход по ссылкам до него не доходит | Вынести публичные страницы на отдельные адреса с обычными ссылками |
Последняя строка — следствие того, что обход идёт по ссылкам, а не отдельное правило из документации. Проверка проста: что находит сканер сайта по ссылкам, то и является вашей навигацией для робота; страницы без входящих ссылок покажет анализ внутренних ссылок.
Фасеты: два пути, и они неравноценны
Фильтры превращают каталог в огромное число адресов. Рекомендация Google: если фасетные адреса не должны индексироваться, закройте их от обхода; если нужны — следуйте перечисленным практикам. Там же предупреждение: обход фасетных адресов обычно стоит сайту больших вычислительных ресурсов из-за их количества и числа операций, нужных для отрисовки.
Способы закрыть обход названы по порядку, и это важно. Первый — disallow в robots.txt: часто нет причин разрешать обход отфильтрованных вариантов, достаточно страниц отдельных товаров и общего списка без фильтров. Второй — фильтры во фрагменте адреса. А вот rel=canonical и rel=nofollow для этого названы в целом менее эффективными в долгосрочной перспективе: canonical лишь может со временем снизить объём обхода неканонических вариантов.
Старое правило «Disallow или canonical» поэтому неточно: это разные по силе инструменты. Плюс две детали из того же руководства: если комбинация фильтров не возвращает результатов, отдавайте код 404, а не редирект на общую страницу ошибки. И не смешивайте с noindex: закрытый в robots.txt адрес не покажет Google своего тега.
Сессии и параметры
Сессионные идентификаторы в адресах — классическая ловушка. В руководстве по структуре URL: где возможно, избегайте идентификаторов сессий в URL и рассмотрите использование cookies; можно закрыть такие адреса в robots.txt. Причина названа там же: слишком сложные адреса с несколькими параметрами создают лишнее число URL с одним и тем же содержимым, из-за чего Googlebot может тратить намного больше трафика, а Google Search — не суметь проиндексировать всё содержимое. Этот вопрос развит в следующем уроке про структуру URL.
Пагинация
Правила для постраничных списков записаны точно:
- Связывайте страницы ссылками a href со следующей страницей — это помогает Googlebot найти последующие.
- Не используйте первую страницу как каноническую для всей последовательности — у каждой страницы свой канонический адрес.
- Не используйте фрагменты вида «#» для номеров страниц: Google игнорирует их и может не пойти по ссылке.
- Google больше не использует теги rel=next и rel=prev, хотя другие поисковики могут их учитывать.
Варианты фильтров и сортировок поверх пагинации подчиняются тому же принципу, что и фасеты: блокируйте нежелательные адреса от индексации.
Хлебные крошки: что документировано
Цепочка Главная → Категория → Страница показывает положение страницы. В документации по разметке: хлебные крошки указывают позицию страницы в иерархии сайта и могут помочь пользователю ориентироваться; можно подняться на любой уровень, начав с последней крошки. Google использует разметку крошек, чтобы категоризировать информацию страницы в результатах поиска.
Одна деталь, которую обычно опускают: функция доступна на компьютерах во всех регионах и языках, где работает Google Поиск — про мобильные результаты там ничего не обещано. Поэтому разметка нужна, но показ в сниппете — не повод её внедрять. Принципы структуры, которую она отражает, разобраны в уроке про информационную архитектуру.
Скорость скриптов: чего нет в документации
Утверждение «медленный JavaScript — прямой сигнал ранжирования, а FCP свыше 2 секунд ухудшает позиции» не подтверждено. В описании пользовательского опыта страницы Core Web Vitals названы одним из нескольких вопросов самооценки, а оговорено так: хорошие результаты в отчётах не гарантируют верхних позиций, а попытка получить идеальную оценку ради SEO может быть не лучшим использованием времени. Порога в 2 секунды для FCP там нет. Скорость улучшать нужно — для людей, но не выдавая это за точный рычаг ранжирования.
Диагностика навигации
- Обойдите сайт сканером: все ли нужные страницы находятся по ссылкам.
- Проверьте, что в меню и пагинации настоящие ссылки a href, а не onclick и «#».
- Посчитайте адреса, порождаемые фильтрами и параметрами; при необходимости закройте их в robots.txt. Состояние адресов — в аудите URL.
- Проверьте пагинацию: свой канонический адрес у каждой страницы, фрагментов нет.
- Цепочки редиректов в навигации — через проверку редиректов.
- Конфликты между страницами одной темы — через каннибализацию запросов.
Ошибки
- Меню и пагинация на onclick без href.
- Маршруты на «#» вместо History API.
- Считать canonical равным по силе закрытию фасетов в robots.txt.
- Ставить Disallow и noindex вместе.
- Редирект пустых комбинаций фильтров на общую страницу вместо 404.
- Первая страница списка как canonical для всех остальных.
- Идентификаторы сессий в адресах.
- Обещать рост позиций от скорости загрузки как от точного рычага.
Что дальше
Следующий урок — о доменах и поддоменах: что считается отдельным сайтом и к чему это приводит.