Техническая суть адресации через символ решётки в адресе
Хеш-роутинг использует часть адреса после символа решётки для обозначения внутреннего состояния или раздела одностраничного приложения, при этом браузер технически трактует всё, что находится после решётки, как локальный якорь, а не как часть адреса, требующую отдельного обращения к серверу.
Почему поисковый робот фактически игнорирует содержимое после решётки
Поскольку часть адреса после решётки не отправляется на сервер как часть запроса, робот при обращении к такому адресу получает лишь базовое содержимое, соответствующее адресу до решётки, полностью упуская из вида предполагаемое различие между отдельными внутренними «страницами».
Практические последствия для структуры и индексации всего сайта
Все внутренние разделы, различающиеся лишь частью адреса после решётки, робот фактически воспринимает как одну и ту же единственную страницу, из-за чего множество содержательно разных разделов сайта оказываются полностью невидимыми для индексации по отдельности.
Практическая замена — переход на history API с настоящими адресами
Современный подход history API позволяет реализовать аналогичную динамическую навигацию одностраничного приложения, но уже с полноценными, самостоятельно индексируемыми адресами без символа решётки, что полностью решает проблему при должной серверной настройке, аналогичной разобранной применительно к маршрутам SPA.
Исторические причины прежней широкой популярности хеш-роутинга
Хеш-роутинг получил широкое распространение на более раннем этапе развития веб-технологий, когда серверная поддержка полноценных динамических маршрутов для одностраничных приложений была технически сложнее в реализации, чем сегодня, что и обусловило его популярность в тот период.
Особенности аккуратной миграции существующего сайта с хеш-роутинга на обычные адреса
При переходе с уже работающего хеш-роутинга на history API важно предусмотреть корректные редиректы со старых адресов с решёткой на новые полноценные адреса, чтобы не потерять уже, возможно, случайно проиндексированные ранее страницы и накопленные на них внешние ссылки.
Как быстро проверить, использует ли сайт именно хеш-роутинг
Присутствие символа решётки в адресной строке браузера при переходе между разделами сайта без полной перезагрузки страницы — характерный и легко заметный внешний признак использования именно хеш-роутинга, требующий отдельного внимания с точки зрения индексации.
Дополнительная сложность корректной аналитики посещений при использовании решётки
Помимо проблем с индексацией, хеш-роутинг способен усложнить и корректный подсчёт посещений отдельных разделов в системах веб-аналитики, поскольку часть аналитических систем по умолчанию не различает переходы, отличающиеся лишь содержимым после символа решётки в адресе.
Частые вопросы
Индексируются ли адреса с решёткой хоть частично?
Как правило, робот учитывает лишь часть адреса до решётки, поэтому все варианты после неё фактически сводятся к одной и той же индексируемой странице.
Сложно ли перейти с хеш-роутинга на history API?
Технически переход требует изменений в коде приложения и соответствующей серверной настройки обработки маршрутов, но большинство современных фреймворков поддерживают оба варианта с относительно несложным переключением.
Есть ли ситуации, где хеш-роутинг остаётся приемлемым?
Для внутренних, не предназначенных для индексации разделов интерфейса — например, состояний внутри уже открытой панели администратора — хеш-роутинг остаётся вполне рабочим и простым решением.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.