Открыть сервисСервис

HTTP-перенаправление и его механизмы

HTTP-перенаправление (англ. redirect) — механизм в протоколе передачи гипертекста, при котором сервер в ответ на запрос клиента сообщает новый адрес запрашиваемого ресурса, а клиент автоматически повторяет запрос по этому адресу. Перенаправления лежат в основе работы Всемирной паутины: они обеспечивают переход с устаревших адресов на актуальные, переводят пользователей с HTTP на защищённый HTTPS, используются при аутентификации, балансировке нагрузки и реструктуризации сайтов.

Общий принцип работы

Клиент (обычно браузер) отправляет HTTP-запрос к серверу. Вместо тела запрошенного документа сервер возвращает ответ со статусным кодом из группы 3xx и заголовком Location, содержащим новый URL. Получив такой ответ, клиент автоматически выполняет новый запрос уже по указанному адресу. Пользователь, как правило, не замечает промежуточного шага, если только цепочка перенаправлений не слишком длинна.

Перенаправление может быть постоянным или временным, а также может сохраняться или не сохраняться в кэше клиента и поисковых систем.

Коды состояния

Стандарт HTTP определяет несколько кодов, относящихся к перенаправлениям:

КодНазваниеНазначение
301Moved PermanentlyПостоянный переход на новый адрес
302FoundВременный переход
303See OtherПеренаправление на другой ресурс, часто после отправки формы
307Temporary RedirectВременный переход с сохранением метода запроса
308Permanent RedirectПостоянный переход с сохранением метода запроса

Различие между 301/302 и 307/308 состоит в том, что последние гарантируют сохранение HTTP-метода (например, POST) и тела запроса при повторном обращении. Коды 301 и 308 указывают на постоянство, что учитывается поисковыми системами при передаче «веса» страницы.

Перенаправление на HTTPS

Одним из наиболее распространённых сценариев является перенаправление с незащищённого протокола HTTP на защищённый HTTPS. Такая практика стала стандартом после широкого внедрения шифрования TLS. Сервер, принимающий запросы по HTTP, отвечает кодом 301 или 308 и указывает в заголовке Location тот же адрес, но со схемой https.

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

Способы реализации

Перенаправления настраиваются на разных уровнях:

  • На уровне веб-сервера. В Apache используются директивы Redirect и RewriteRule модуля mod_rewrite; в Nginx — конструкция return 301 или rewrite.
  • На уровне приложения. Серверные фреймворки предоставляют функции формирования ответа с кодом 3xx и заголовком Location.
  • На уровне разметки. HTML-элемент <meta (организация признана экстремистской, деятельность запрещена в РФ) http-equiv="refresh"> и JavaScript-свойство window.location позволяют инициировать переход средствами клиента, однако такие методы менее предпочтительны с точки зрения стандартов.
  • На уровне DNS и CDN. Провайдеры контент-доставки и службы управления доменами поддерживают правила перенаправления на своей стороне.

Применение

Помимо перехода на HTTPS, перенаправления решают ряд задач:

  • Смена структуры сайта. При изменении адресов страниц старые URL перенаправляются на новые, что сохраняет работоспособность внешних ссылок и позиции в поиске.
  • Объединение доменов. Несколько доменных имён могут вести на один основной адрес.
  • Балансировка и отказоустойчивость. Запросы могут перенаправляться на другой сервер или регион.
  • Аутентификация. После входа пользователь перенаправляется на изначально запрошенную страницу.
  • Сокращение ссылок. Сервисы коротких ссылок выдают перенаправление на полный адрес.

Влияние на поисковую оптимизацию

Поисковые системы интерпретируют перенаправления как указание на перемещение ресурса. Постоянные коды (301, 308) передают основную часть ссылочного веса на новый адрес и способствуют замене старой страницы в индексе. Временные коды (302, 307) сообщают, что исходный адрес сохраняет актуальность. Длинные цепочки перенаправлений и «петли», при которых адреса ссылаются друг на друга, замедляют загрузку и негативно сказываются на индексации.

Ограничения и риски

Чрезмерное число последовательных перенаправлений увеличивает время отклика. Некоторые клиенты ограничивают допустимую длину цепочки. Открытые перенаправления, при которых параметр адреса подставляется из пользовательского ввода без проверки, могут использоваться для фишинга и потому считаются уязвимостью. Кроме того, перенаправление не заменяет корректную настройку сертификата: если HTTPS-ресурс недоступен, переход приведёт к ошибке.

Источники

  • RFC 7231, RFC 7538 — спецификации протокола HTTP.
  • Документация Apache HTTP Server, модуль mod_rewrite.
  • Документация Nginx по директивам rewrite и return.
  • Руководства поисковых систем по перенаправлениям.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru