Канонизация и редиректы 2 мин чтения

Цепочки редиректов

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

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

http://www.example.ru/tovar
  → https://www.example.ru/tovar     (переход на HTTPS)
  → https://example.ru/tovar         (склейка www)
  → https://example.ru/tovar/        (добавление слэша)

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

Чем это вредно

Скорость. Пользователь ждёт, пока браузер отработает всю цепочку, — до начала загрузки самой страницы.

Краулинговый бюджет. Робот тратит на каждое звено отдельный запрос. На большом сайте, где так устроены все адреса, это заметная доля бюджета обхода.

Потери при длинных цепочках. Поисковики обещают проходить до пяти переходов, но на практике длинные цепочки обходятся хуже, а часть авторитета по дороге теряется.

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

Как посмотреть свою цепочку

curl -I -L http://www.example.ru/tovar

Каждый блок в выводе — одно звено. Идеально, когда блок один и в нём сразу 200.

В браузере: F12 → вкладка Network → галочка Preserve log → откройте адрес. Все промежуточные ответы с кодами 301/302 будут в списке.

В нашем отчёте это пункт «Длина цепочки редиректов»: одно перенаправление — норма, два — замечание, больше — проблема.

Как распутать

Соберите все правила перенаправления в одно место и напишите одно правило, ведущее сразу на финальный адрес. Типичный порядок разбора:

  1. Определите канонический вид адреса: протокол (https), домен (с www или без), слэш в конце (есть или нет). Решение принимается один раз и соблюдается везде.
  2. Убедитесь, что правило веб-сервера приводит любой вариант к этому виду за один шаг. В nginx для этого достаточно одного server-блока со всеми не-каноническими вариантами и одним return 301.
  3. Проверьте плагины и модули CMS: они любят добавлять собственные редиректы поверх серверных. Часто именно так появляется второе и третье звено.
  4. Поправьте внутренние ссылки на сайте, в карте сайта и в rel=canonical — они должны указывать сразу на канонический адрес, чтобы редирект вообще не срабатывал.

Последний пункт важнее, чем кажется: самый быстрый редирект — тот, который не понадобился.

Особый случай: редирект на редирект после переезда

Когда сайт переезжал дважды (сменил структуру, потом домен), старые правила складываются друг с другом. Здесь помогает разовая ревизия: составьте таблицу «старый адрес → актуальный адрес» и перепишите правила напрямую, минуя промежуточные версии. Старые правила при этом не удаляйте, а замените — внешние ссылки на давние адреса всё ещё существуют.

А что с этим на вашем сайте?

Аудит «Кверху» проверяет этот пункт вместе с остальными пятьюдесятью и показывает конкретику: какие страницы затронуты и что именно исправить. Первая полная проверка проекта — бесплатно.

Проверить сайт бесплатно