Что такое нормализация URL

url iconНормализацией URL называют процесс приведения различных URL к единообразному виду. Целью процесса нормализации является преобразование URL в нормализованный вид, с тем, чтобы определить эквивалентность двух синтаксически различных URL-адресов.

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

Если говорить о практической стороне вопроса, то нормализацию URL используют поисковые системы и веб-браузеры. Первым она помогает избегать повторного сканирования ресурсов и снизить индексацию дубликатов страниц. Вторым помогает определить, была ли ранее посещена данная страница и находится ли она в кэше.

Нормализация с сохранением исходного написания

Конвертация в нижний регистр — компоненты схемы и хоста не чувствительны к регистру, и большинство нормализаторов конвертирует URL в нижний регистр. Пример:

HTTP://www.Example.com/http://www.example.com/

Перевод в верхний регистр управляющих конструкций — все символы с процентным указателем являются зависимыми от регистра, поэтому они должны быть переведены в верхний регистр. Пример:

http://www.example.com/a%c2%b1bhttp://www.example.com/a%C2%B1b

Перекодировка управляющих конструкций в явные символы — для связанности процентные конструкции переводятся в понятные символы: альфа (%41-%5A и %61-%7A), цифровые (%30%39), дефис (%2D), точка (%2E), подчёркивание (%5F) или тильда (%7E) создаваться не должны. Когда такие URI находятся с процентными конструкциями, они должны быть переведены в символы. Например:

http://www.example.com/%7Eusername/http://www.example.com/~username/

Удаление используемого по умолчанию порта — порт по умолчанию (тот же порт 80 для протокола HTTP) может быть удалён из URL. Например:

http://www.example.com:80/bar.htmlhttp://www.example.com/bar.html

Нормализация с частичным сохранением исходного написания

Добавление конечной косой черты — применяется для демонстрации того, что URL относится к каталогу. Например:

http://www.example.com/alicehttp://www.example.com/alice/

Удаление сегментов-точек — сегменты «..» и «.» могут быть удалены из URL. Например:

http://www.example.com/../a/b/../c/./d.htmlhttp://www.example.com/a/c/d.html

Нормализация с изменением написания

Удаление головного индекса:

http://www.example.com/default.asphttp://www.example.com/

http://www.example.com/a/index.htmlhttp://www.example.com/a/

Удаление фрагментов — хотя фрагменты URL и могут быть удалены, стоит учитывать, что приложения на AJAX часто используют переменные в таких фрагментах и их удаление может привести к перенаправлению на другой ресурс.

http://www.example.com/bar.html#section1http://www.example.com/bar.html

Замена IP-адреса именем домена:

http://208.77.188.166/http://www.example.com/

Сокращение идентификаторов протоколов — различные протоколы прикладного уровня, например, HTTPS, могут быть переведены в HTTP. Например:

https://www.example.com/http://www.example.com/

Удаление дублированных слешей — два соседних слеша в пути можно преобразовать в один. Например:

http://www.example.com/foo//bar.htmlhttp://www.example.com/foo/bar.html

Удаление или добавление «www» как элемента верхнего доменного уровня — бывает, что сайты оперируют двумя Интернет-доменами: с «www» и без. Обычно веб-сайты перенаправляют пользователя с www-адреса на адрес без «www», но бывает и наоборот.

http://www.example.com/http://example.com/

http://example.com/http://www.example.com/

Сортировка параметров запросов — иногда веб-страницы используют более одного параметра в URL. Алгоритмы нормализации могут отсортировать параметры в алфавитном порядке (с сохранением их значений) и пересоздать URL. Например:

http://www.example.com/display?lang=en&article=fredhttp://www.example.com/display?article=fred&lang=en

Однако порядок параметров в URL может быть значимым (это не определяется стандартами) и веб-сервер может позволять переменным появляться несколько раз.

Удаление неиспользуемых переменных в запросе — страница может ожидать только определённые параметры. В таком случае неиспользуемые параметры можно удалить. Например:

http://www.example.com/display?id=123&fakefoo=fakebarhttp://www.example.com/display?id=123

Учитывайте, что отсутствие значения у параметра не указывает на то, что параметр не используется.

Удаление параметров запроса по умолчанию — значение параметров по умолчанию в строке запроса могут показывать одинаковый результат, даже если они не будут указаны. Например:

http://www.example.com/display?id=&sort=ascendinghttp://www.example.com/display

Удаление «?» при пустом запросе — обычно, если запрос пустой, то и символ «?» оказывается бесполезным. Например:

http://www.example.com/display?http://www.example.com/display

Подробнее с нормализацией URL можно ознакомиться в стандарте RFC 3986.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *