Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Разработка

Нормализация пути до маршрутизации

После обработки неизвестных адресов посмотрим на противоположную проблему — слишком много вариантов записи одного и того же адреса.

Сколько адресов у одной страницы

Без нормализации страница нередко доступна сразу в нескольких видах: со слешем и без него, с заглавными буквами, с двойными слешами, с лишним фрагментом в конце. Для человека это одна страница, для поисковой системы — потенциальные дубли, как объясняет статья про дубли из-за адресов.

Что приводить к единому виду

  • регистр букв — к нижнему;
  • завершающий слеш — всегда или никогда;
  • повторяющиеся слеши — к одному;
  • служебные фрагменты вроде index.html — убирать;
  • порядок и набор параметров запроса — по установленному правилу.

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

Не стоит молча обрабатывать любой вариант. Лучше перенаправлять запрос на единственный правильный адрес кодом 301, чтобы поисковая система запомнила именно его.

// Псевдокод
path = request.path
clean = normalize(path)      // нижний регистр, один слеш, без index.html
if (clean !== path) redirect(301, clean)

Порядок операций имеет значение

Нормализацию выполняют до выбора маршрута: иначе разные варианты адреса совпадут с разными маршрутами или вовсе ни с одним. Кроме того, перед сравнением полезно привести к общему виду и символы Unicode, как описано в статье про нормализацию Unicode.

Как проверить результат

Тест: откройте одну и ту же страницу с заглавной буквой, с двойным слешем и без завершающего слеша. Каждый вариант должен вести одним редиректом на единственный правильный адрес.

Параметры запроса и их порядок

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

  1. уберите служебные метки рекламных кампаний;
  2. отсортируйте оставшиеся параметры;
  3. перенаправьте на канонический вид или укажите его в мета-теге.

Кириллические адреса и процентное кодирование

Один и тот же кириллический сегмент может приходить в разных формах записи: в виде букв или в виде процентных кодов, а также с разными вариантами кодирования символов. Перед сравнением приводите значение к единому виду, иначе одна и та же страница получит несколько «разных» адресов.

Частые вопросы

Зачем приводить адрес к единому виду?

Чтобы одна страница не была доступна по нескольким адресам, которые поисковая система воспримет как дубли.

Как правильно перенаправлять неправильные варианты адреса?

Постоянным редиректом с кодом 301 на единственный основной вариант.

На каком этапе выполнять нормализацию?

До выбора маршрута, чтобы все варианты записи адреса гарантированно приводились к одному виду.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также