Навігація, дружня до пошуку
Навігація, дружня до пошуку — це набір шляхів, якими робот може дійти до кожної потрібної сторінки і не заблукати в зайвих. Задокументовано тут менше, ніж прийнято вважати: посилання працює лише в певній формі, адреси з «#» робот не розбирає надійно, а швидкість скриптів не має порога, про який пишуть у чек-листах. У цьому уроці — що підтверджено, де пастки і що робити з фільтрами та пагінацією.
Спиратися будемо на основи 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 для всіх інших.
- Ідентифікатори сесій в адресах.
- Обіцяти зростання позицій від швидкості завантаження як від точного важеля.
Що далі
Наступний урок — про домени й піддомени: що вважається окремим сайтом і до чого це призводить.