[Документация Yandex Cloud](../index.md) > [Облачная терминология](index.md) > Сети и доставка контента > URL

# Uniform Resource Locator (URL)

_URL_ (Uniform Resource Locator с англ. — «унифицированный указатель местонахождения ресурса») — это набор слов и символов, указывающий на протокол сайта и его местонахождение в интернете. Кроме указания адреса ресурса, URL также используются для идентификации механизмов получения файлов, требований к безопасности и другого.

Концепцию URL в 1990 году придумал Тим Бернерс-Ли для организации системы обмена информацией между учеными CERN (Европейской организации по ядерным исследованиям) и вскоре опубликовал первый сайт, адрес которого выглядел так: `http://info.cern.ch`. Термин URL был официально зарегистрирован в 1994 году, когда стандартизировались первые протоколы для веб-адресов и был выпущен [RFC 1738](https://datatracker.ietf.org/doc/html/rfc1738).

Со временем URL-адреса обзавелись новым схемами и компонентами для более точного указания местоположения ресурса. Актуальный стандарт URL закреплен в [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Возможно, позже он изменится. Например, Тим Бернерс-Ли в 2009 году заявил, что символы `//` после сетевого протокола избыточны.

## Отличия URL от URI и URN {#uri-urn}

В последнее время вместо термина URL все чаще используют URI (Uniform Resource Identifier), поскольку он является более универсальным. URL и URN (Uniform Resource Name) — это подмножества URI, хотя в повседневной речи под ними часто подразумевают одно и то же.

### URI {#uri}

Унифицированный идентификатор ресурса может идентифицировать его как по уникальному имени, так и по адресу.

Пример: `https://my-site.ru/about-url?lang=ru#uri`.

### URL {#url}

Унифицированный указатель местонахождения ресурса идентифицирует его только по адресу.

Пример: `https://my-site.ru/about-url`.

### URN {#urn}

Унифицированное имя ресурса идентифицирует его только по имени.

Пример: `my-site.ru/about-url.html`.

## Структура {#structure}

Помимо URL, в URI можно встретить и другие компоненты, поэтому рассмотрим их все:

```text
<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<фрагмент>
```

Где:

* `схема` — сетевой протокол. Среди них есть общепринятые, например:

  * `http` — схема передачи гипертекста.
  * `ftp` — схема передачи файлов.
  * `mailto` — адреса электронной почты.

  И зарегистрированные для определенных ресурсов:

  * `tg` — схема мессенджера Telegram.
  * `bitcoin` — схема криптовалюты Bitcoin.

* `логин` и `пароль` — данные для идентификации пользователя. В защищенных URL они скрыты или [зашифрованы](#encryption) от злоумышленников.
* `хост` — уникальный сетевой адрес сервера.
* `порт` — число, присвоенное для идентификации конечной точки подключения.
* `URL-путь` — путь, который обычно записывается в виде иерархии данных внутри ресурса.
* `параметры` — предпочтительные настройки, передаваемые на сервер. Например, язык или вид сортировки элементов.
* `фрагмент` — ссылка (якорь) на заголовок или раздел внутри страницы.

## Синтаксис {#syntax}

URL имеет свой синтаксис, который ограничен набором символов [стандарта кодирования ASCII](https://ru.wikipedia.org/wiki/ASCII) без пробелов. В URL могут содержаться графические символы, которые используются для разных целей:

* Зарезервированные — разделяют [компоненты](#structure) адреса и включают два типа:

  * главные разделители, которые разделяют URI на крупные компоненты (например, `/`, `@`, `?`);
  * подразделители, которые разделяют крупные компоненты на мелкие (например, `!`, `&`, `$`).

* Незарезервированные — все остальные символы, которые используются для идентификации ресурса. Помимо цифр и букв, это разделители вроде `-` или `_`.

В синтаксисе URL также предусмотрено _процентное кодирование_, которое позволяет использовать символы, не включенные в стандарт кодирования ASCII. Оно решает проблему неправильной интерпретации входящих данных. Процентно-кодированный символ состоит из знака `%` и следующих за ним цифр. Например, пробел можно записать в виде `%20`.

URL могут быть написаны в том числе и кириллическими символами, например `https://ru.wikipedia.org/wiki/Интернет`. Это облегчает восприятие адреса русскоязычными пользователями, но может создать трудности при копировании ссылки — кириллические символы станут процентно-кодированными.

Если рассматривать URI в целом, то интерпретация адреса также часто зависит от используемого парсера и может немного отходить от привычного синтаксиса. Например, большинство браузеров воспримут запись `http://http://http://@http://http://?http://#http://` как URI несуществующей страницы, а не просто текст.

## Шифрование URL {#encryption}

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

* Незашифрованный адрес: `https://my-shop-example.ru/order?product=notebook&price=250`.
* Зашифрованный адрес: `https://my-shop-example.ru/order?token=5a43gh76c-87b0-4d0b-b69k-241e83d9403a`.

Шифрование может создать дополнительную нагрузку на сервер, однако пренебрегать им не рекомендуется в целях безопасности. Шифрование URL не заменяет [SSL-сертификат](ssl-certificate.md), а должно использоваться в комплекте с ним.

## Типы URL {#types}

В зависимости от возможности изменяться URL бывают двух видов:

* **Статические**. Содержимое статического URL не меняется в зависимости от действий пользователя. Обычно они представляют собой понятный набор слов, по которым легко отследить свое местоположение на сайте, например `https://my-shop-example.ru/contacts`. На них проще проводить поисковую индексацию, поэтому SEO-специалисты (Search Engine Optimization) отдают им предпочтение.
* **Динамические**. Содержимое таких адресов генерируется в режиме реального времени. Пользователь обычно сам может задавать настройки страницы, включать и выключать какие-то фильтры и другое. После изменения страницы в адрес добавляются новые компоненты, например `?category=televizory`. Такие URL часто можно встретить в интернет-магазинах.

По полноте пути URL делятся на:

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

## Рекомендации по созданию понятных URL {#recommendations}

Чтобы облегчить взаимодействие пользователя и поисковых систем с сайтом, можно соблюдать ряд простых правил по формированию URL-адресов:

* Используйте URL, которые понятно описывают содержание страницы. Например, `seo/url/recommendations`. Такие URL называют _человекопонятными_. Они легко запоминаются и могут передаваться даже при устном общении.
* Воспользуйтесь транслитерацией, если хотите, чтобы URL могли читать пользователи без знаний английского языка.
* Разделяйте слова дефисами. Нижние подчеркивания читаются хуже, поэтому их не так часто встретишь в адресах известных сайтов.
* Избегайте заглавных букв.
* Используйте [SSL-сертификаты](ssl-certificate.md). Они меняют схему URL с `http` на `https` и помогают пользователям, браузерам и поисковикам понять, что сайт безопасный.
* Используйте в URL ключевые слова, но не переусердствуйте, иначе поисковые системы могут принять это за спам.
* Пытайтесь создавать максимально короткие адреса. Используйте только самые необходимые слова, без которых трудно понять, что находится на странице. Например, можно без потери смысла удалить из URL предлоги, союзы и многие прилагательные.

## Конфигурирование URL c помощью сервисов Yandex Cloud {#configure-url-yc}

С помощью технологий Yandex Cloud вы можете создать онлайн-сервис для сокращения URL. Сервис будет принимать запросы пользователей в виде URL и возвращать их сокращенные версии. Подробнее — в руководстве [Сокращатель ссылок](../tutorials/serverless/serverless-url-shortener/index.md).