Нормализа́ция URL — процесс, при котором URL приводится к единообразному виду. Цель процесса нормализации заключается в преобразовании URL в нормализованный вид, с тем, чтобы определить эквивалентность двух синтаксически различных URL-адресов.[1]
Поисковые системы используют нормализацию URL для того, чтобы снизить индексацию дубликатов страниц и расположить страницы в порядке значимости. Поисковые роботы выполняют нормализацию URL для того, чтобы избежать повторного сканирования ресурса. Браузеры могут выполнять нормализацию, чтобы определить было ли посещение или есть ли страница в кэше.
Есть несколько типов нормализации, которые могут быть применены к URL: одни сохраняют исходный адрес➤, другие — не сохраняют➤.
Перечисленные ниже способы нормализации описаны в RFC 3986[2] и приводят к эквивалентным URL.
Конвертация в нижний регистр. Компоненты схемы и хоста не чувствительны к регистру, и большинство нормализаторов конвертирует URL в нижний регистр. Например:
HTTP://www.Example.com/ → http://www.example.com/
Перевод в верхний регистр управляющих конструкций Все символы с процентным указателем (например «%3А») являются регистро-зависимыми и должны быть переведены в верхний регистр. Например:
Перекодировка управляющих конструкций в явные символы. Для связанности процентные конструкции переводятся в понятные символы (Альфа (%41-%5A и %61-%7A), Цифровые (%30-%39), дефис (%2D), точка (%2E), подчёркивание (%5F), или тильда (%7E) не должны создаваться URI поставщиками и когда находятся такие URI с процентными конструкциями, то они должны быть переведены в символы.[3] Например:
Нормализация с частичным сохранением исходного написания
Для протоколов http и https следующие варианты нормализации по стандарту RFC 3986 могут привести к эквивалентным URL, но стандартом это не гарантируется.
Добавление конечной косой черты. Демонстрация каталога при помощи конечной косой черты, включённой в состав URL. Например:
Однако нет способа узнать, включает ли URL путь к каталогу или нет. В RFC 3986 указано, что если исходный URL перенаправляет на нормализованный URL, то это является признаком эквивалентности.
Удаление сегментов-точек. Сегменты «..» и «.» могут быть удалены из URL, согласно алгоритму, описанному в RFC 3986 (или похожему). Например:
Удаление или добавление «www» как элемента верхнего доменного уровня. Некоторые сайты оперируют двумя интернет-доменами. Например http://example.com/ и http://www.example.com/ могут вести на один ресурс. Многие веб-сайты перенаправляют пользователя с www на не-www адрес или наоборот. Алгоритмы нормализации могут определить эти перенаправления и соответствующим образом преобразовать URL. Например:
http://www.example.com/ → http://example.com/
Сортировка параметров запросов. Некоторые веб страницы используют более чем один параметр в URL. Алгоритмы нормализации могут отсортировать параметры в алфавитном порядке (с сохранением их значений) и пересоздать URL. Например:
Однако порядок параметров в URL может быть значимым (это не определяется стандартами) и веб сервер может позволять переменным появляться несколько раз.[4]
Удаление неиспользуемых переменных в запросе. Страница может ожидать только определённые параметры и неиспользуемые параметры можно удалить. Например:
Параметр без значения не означает что параметр не используется.
Удаление параметров запроса по умолчанию. Значение параметров по умолчанию в строке запроса могут показывать одинаковый результат, даже если они не будут указаны. Например:
Некоторые правила нормализации могут быть разработаны для определенных веб-сайтов, изучая списки URL, полученные от предыдущих сканирований журнала или логов сервера. Например, если URL
http://foo.org/story?id=xyz
появляется в журнале логов несколько раз вместе с
http://foo.org/story_xyz
можно предположить, что эти два URL эквивалентны и могут быть нормализованы в одну из форм.
Сконфелд и соавторы в 2006 году[5] представили эвристическую систему DustBuster, которая позволяет обнаружить DUST (different URLs with similar text, различные URL с похожим текстом), это правила которые могут быть применены к URL спискам. Они показали, что как только были найдены нужные правила по DUST и применены к нормализующим алгоритмам, они показали способность к поиску до 68 % избыточных URL-адресов в списках URL.