Структура URL
Стандартная анатомия адреса ресурса в интернете по RFC 3986: scheme://[userinfo@]host[:port]/path[?query][#fragment]. Каждый компонент выполняет отдельную функцию — от выбора протокола до передачи параметров аналитики.
Что такое URL и зачем нужна его структура
URL (Uniform Resource Locator) — это стандартизированный адрес любого ресурса в интернете: веб-страницы, изображения, API-эндпоинта, файла. Стандарт описан в RFC 3986 и определяет синтаксис, которому следуют браузеры, поисковые роботы, QR-сканеры и любое ПО, работающее с сетевыми ресурсами.
Общая форма записи:
scheme://[userinfo@]host[:port]/path[?query][#fragment]
Квадратные скобки означают необязательные части. На практике большинство URL содержат только scheme, host, path и иногда query — остальное опционально.
Компоненты URL и их назначение
Разберём каждую часть на конкретном примере:
https://qrkoder.ru:443/blog/qr-kody?utm_source=qr&page=2#comments
- Scheme (схема) —
https. Определяет протокол передачи данных. Для веба это HTTPS или HTTP; существуют такжеftp,mailto,tel,sms,intent(Android deep links). Scheme всегда отделяется от остального URL двоеточием и двумя косыми чертами. - Host (хост) —
qrkoder.ru. Доменное имя или IP-адрес сервера, на котором расположен ресурс. Регистронезависим:QRkoder.RUиqrkoder.ruэквивалентны. Может включать поддомен:app.qrkoder.ru. - Port (порт) —
443. Числовой идентификатор сетевой службы. HTTPS использует 443 по умолчанию, HTTP — 80. Стандартные порты в URL опускают:https://qrkoder.ruиhttps://qrkoder.ru:443— один и тот же адрес. - Path (путь) —
/blog/qr-kody. Иерархическая часть, разделённая косыми чертами. Указывает на конкретный ресурс или раздел на сервере. Регистрозависима:/Blog/QR-Kodyи/blog/qr-kody— разные пути. - Query (строка запроса) —
utm_source=qr&page=2. Начинается с символа?, параметры разделяются&. Передаёт дополнительные данные: UTM-метки для аналитики, фильтры, идентификаторы сессий. Порядок параметров технически не важен, но может влиять на кэширование и canonical. - Fragment (фрагмент) —
comments. Начинается с символа#. Указывает на конкретный элемент страницы по егоid. Не отправляется на сервер — браузер обрабатывает его самостоятельно, прокручивая страницу к нужному якорю.
Кодирование и длина URL
URL по стандарту может содержать только ограниченный набор ASCII-символов. Всё остальное — кириллица, пробелы, специальные символы — должно быть закодировано через percent-encoding: каждый байт символа записывается как %XX, где XX — шестнадцатеричный код. Пример: пробел → %20, буква «я» → %D1%8F.
RFC 3986 не устанавливает жёсткий лимит на длину URL. На практике ограничения исходят от приложений:
- Браузеры (Chrome, Firefox): около 32 000 символов
- Серверы (Apache, Nginx по умолчанию): 8 000–16 000 символов
- Рекомендация для SEO и совместимости: не более 2048 символов
Для QR-кодов длина URL критична: каждый дополнительный символ увеличивает плотность модулей в коде и снижает надёжность сканирования. Адрес из 30 символов даёт компактный код версии 3–4; адрес из 300 символов — версии 15–20, который плохо читается с расстояния и в условиях слабого освещения. Поэтому длинные URL в QR заменяют короткими ссылками через URL Shortener.
Частые вопросы
Чем URL отличается от URI и URN?
URI (Uniform Resource Identifier) — общее понятие для любого идентификатора ресурса. URL — подвид URI, который содержит адрес (где найти ресурс). URN — другой подвид, который содержит имя (что это такое), например urn:isbn:978-5-000-00000-0. В обиходе «URL» и «URI» используют как синонимы — различие важно лишь в формальных спецификациях.
Почему QR-код хуже сканируется при длинном URL?
QR-код хранит данные в матрице модулей (чёрно-белых квадратов). Чем длиннее строка, тем больше модулей нужно, тем плотнее матрица. При стандартном распечатанном размере 3×3 см плотный код версии 20+ содержит элементы размером менее 0,5 мм — камера смартфона не всегда их разрешает. Оптимум: URL до 50–80 символов, код версии 4–7, уверенное сканирование с 20–30 см.
Что такое «нормализация URL» и зачем она нужна?
Нормализация — приведение URL к единому виду: схема в нижний регистр, удаление стандартного порта, декодирование безопасных percent-encoded символов, добавление или удаление завершающего слэша. Нужна для правильного кэширования, дедупликации в базах данных и корректной работы canonical URL. Без нормализации два одинаковых ресурса могут храниться по двум разным адресам.
Как fragment (#) связан с SEO?
Fragment не передаётся на сервер и не индексируется поисковиками как отдельная страница. Googlebot видит URL без части после #. Исключение — hashbang-ссылки #!/path (устаревшая практика AJAX-сайтов). Современные SPA используют History API для навигации без # и без потери индексируемости.
Можно ли использовать кириллицу в URL?
Технически да — через IDN (Internationalized Domain Names) для хоста и percent-encoding для пути. Браузеры отображают кириллический домен в строке адреса в человекочитаемом виде, но передают его в формате Punycode: qrkoder.рф → xn--qrkoder-p1a.xn--p1ai. Для QR-кодов кириллические URL нежелательны: после percent-encoding адрес вырастает в 2–3 раза, а некоторые старые сканеры их не поддерживают.
Влияет ли структура URL на ранжирование в поиске?
Да, но в пределах разумного. Google и Яндекс предпочитают короткие, читаемые URL с ключевыми словами в пути (/blog/qr-kody лучше /p?id=4821). Иерархия пути отражает структуру сайта и помогает роботу понять тематику страницы. Чрезмерное количество параметров в query снижает краулинговый бюджет и может привести к дублям без правильного canonical.