Что такое URL

URL-адреса встречаются повсюду. Мы используем их для доступа к веб-сайтам, отправки электронной почты, загрузки файлов и многого другого. Но что такое URL и как он работает? В этой статье мы рассмотрим анатомию URL, различные типы URL, способы кодирования и декодирования URL, разработку и отладку URL, а также некоторые советы по безопасности при использовании URL.

Что такое URL

URL (Uniform Resource Locator) — это строка символов, которая идентифицирует ресурс в Интернете. Ресурсом может быть все, к чему можно получить доступ в Интернете, например, веб-страница, изображение, видео, документ и т. д.

URL состоит из двух частей: схемы и пути. Схема определяет протокол или метод доступа к ресурсу, например http, https, ftp, mailto и т. д. Путь определяет местоположение или адрес ресурса на сервере или в сети. Например, вот URL-адрес, состоящий из двух частей

https://www.example.com/index.html
--^-- ---------^----------------
схема путь

Анатомия URL

URL может иметь несколько компонентов, которые предоставляют дополнительную информацию о ресурсе или способе доступа к нему. Эти компоненты разделяются специальными символами, называемыми разделителями. Основная структура URL-адреса такова:

схема://[пользователь:пароль@]хост[:порт]/путь[?запрос][#фрагмент]
  • За схемой следует двоеточие : и две косые черты //.
  • Пользователь и пароль необязательны и используются для аутентификации. Они разделяются двоеточием : и сопровождаются знаком @.
  • Хост — это имя или IP-адрес сервера, или сети, где расположен ресурс. Он также может включать поддомен или доменное имя.
  • Порт является необязательным и указывает номер порта на сервере, через который можно получить доступ к ресурсу. Перед ним ставится двоеточие.
  • Путь — это последовательность каталогов и файлов, ведущих к ресурсу на сервере. Они разделяются косой чертой /.
  • Запрос является необязательным и содержит дополнительные параметры или данные, которые отправляются на сервер вместе с запросом на ресурс. Ему предшествует вопросительный знак ?.
  • Фрагмент является необязательным и идентифицирует определённую часть или раздел ресурса. Ему предшествует знак хэша #.

Вот пример URL со всеми этими компонентами:

https://www.example.com:8080/blog/post.php?id=123&lang=en#comments

- схема: https
- пользователь: нет
- пароль: нет
- хост: www.example.com
- порт: 8080
- путь: /blog/post.php
- запрос: id=123amp;lang=en
- фрагмент: comments

Кодирование URL

Иногда нам нужно включить в URL специальные символы или пробелы, которые не разрешены или имеют другое значение в синтаксисе URL. Например, мы хотим найти в Google программирование на C#, но не можем использовать в запросе знак #, поскольку он используется в качестве разделителя фрагментов. Чтобы решить эту проблему, мы можем использовать кодировку URL или процентную кодировку. Это процесс преобразования этих символов в формат, который можно безопасно передавать в URL. Формат состоит из знака процента %, за которым следуют две шестнадцатеричные цифры, представляющие ASCII-код символа. Например, знак # кодируется как %23, а пробел — как %20. Таким образом, наш поисковый запрос будет выглядеть следующим образом:

https://www.google.com/search?q=C%23+programming

Кодирование URL также может быть использовано для кодирования символов, не являющихся символами ASCII, таких, как китайские или арабские символы, в формат UTF-8. Например, китайское слово привет 你好 кодируется как %E4%BD%A0%E5%A5%BD.

Относительные и абсолютные URL

Абсолютный URL — это полный URL, в котором указаны все компоненты расположения ресурса, такие как схема, хост, порт, путь, запрос и фрагмент. Например:

https://www.example.com/blog/post.php?id=123&lang=en#comments

Относительный URL — это неполный URL, в котором отсутствуют некоторые или все эти компоненты, а их разрешение зависит от контекста или базового URL. Например:

/blog/post.php?id=123&lang=en#comments

Этот относительный URL может быть преобразован в абсолютный URL, если мы знаем, что он ссылается на тот же хост и схему, что и базовый URL:

https://www.example.com/blog/post.php?id=123&lang=en#comments

Это полезно, когда мы хотим сослаться на ресурс на том же сайте или сервере. Например, мы можем использовать относительный URL для ссылки на другую страницу на том же сайте:

<a href="/about">About</a>

Маршрутизация URL

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

  • Если URL имеет вид /home, отображается домашняя страница.
  • Если URL имеет вид /blog/post?title=whats-in-a-url, обслуживается запись в блоге с заголовком Что в URL?.
  • Если URL-адрес имеет вид /about, откроется страница О сайте.
  • Если URL не соответствует ни одному из этих правил, выдаётся страница 404 (не найдено).

Маршрутизация URL также может включать извлечение параметров из URL и передачу их ресурсу. Например, в URL /blog/post?title=whats-in-a-url параметр title имеет значение whats-in-a-url. Это значение может быть использовано ресурсом статьи блога для отображения соответствующего содержимого.

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

  • Если URL-адрес имеет вид /blog/post/<slug>, обслуживается запись блога со словом <slug>.
  • Если записи в блоге с таким названием не существует, откроется страница 404

В данном случае <slug> — это переменная, которая может принимать любое значение. Например, /blog/post/whats-in-a-url и /blog/post/how-to-design-urls — оба допустимых URL, которые соответствуют этому правилу.

Лучшие практики разработки URL

Дизайн URL — это важный аспект веб-разработки, который влияет на удобство использования, поисковую оптимизацию (SEO) и удобство обслуживания. Вот несколько лучших практик для создания чётких, последовательных и содержательных URL-адресов:

  • Используйте описательные слова вместо цифр или кодов. Например, /blog/post/whats-in-a-url лучше, чем /blog/post/12345.

  • Используйте дефисы (-) вместо знаков подчёркивания (_) или пробелов (%20) для разделения слов. Например, /blog/post/whats-in-a-url лучше, чем /blog/post/whats_in_a_url или /blog/post/whats%20in%20a%20url.

  • Используйте строчные буквы вместо прописных. Например, /blog/post/whats-in-a-url лучше, чем /blog/post/Whats-In-A-URL.

  • Используйте короткие и простые URL вместо длинных и сложных. Например, /blog/post/whats-in-a-url лучше, чем /blog/category/web-development/subcategory/url-design/article/whats-in-a-url.

  • Избегайте использования лишних слов или символов в URL. Например, /blog/post/whats-in-a-url лучше, чем /blog/posts/view-post.php?title=whats-in-a-url.

  • Используйте в URL ключевые слова, которые относятся к вашему контенту и целевой аудитории. Например, /blog/post/whats-in-a-url лучше, чем /blog/post/random-stuff.

  • Будьте последовательны в структуре URL и соглашениях на всем сайте.

  • Избегайте изменения URL-адресов после их публикации. Если вам необходимо изменить URL, используйте редирект для перенаправления запросов к старому URL на новый URL.

  • Используйте канонические URL-адреса: Канонические URL — это предпочтительные версии ваших страниц, которые поисковые системы должны индексировать и отображать. Вы должны использовать канонические теги или перенаправления, чтобы избежать проблем с дублированием контента, вызванных различиями в URL-адресах. Например, если у вас есть несколько URL, указывающих на одну и ту же страницу, например, https://www.example.com/blog/whats-in-a-url и https://example.com/whats-in-a-url, вам следует указать один из них в качестве канонического URL и перенаправлять или ссылаться на него с остальных.

Заключение

В этой статье мы узнали об URL-адресах и о том, как они используются для идентификации и поиска ресурсов в Интернете. Мы также узнали о различных компонентах URL и о том, как использовать кодировку URL для включения специальных символов в URL. Мы также узнали о маршрутизации URL и некоторых передовых методах разработки URL. Надеюсь, вы нашли эту статью полезной. Увидимся в следующий раз!

Дополнительные материалы

Предыдущая Статья

Vim: Вставить совпавший шаблон

Следующая Статья

Vim: Как изменить регистр при замене