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

Перенаправление в информационных системах

Редирект (от англ. redirect — «перенаправление») — механизм автоматического перенаправления пользователя или программы с одного адреса (URL, сетевого адреса, файла) на другой. Применяется в веб-технологиях, сетевых протоколах, файловых системах и операционных средах. В узком смысле под редиректом чаще всего понимают HTTP-перенаправление — ответ веб-сервера, предписывающий клиенту обратиться по новому адресу.

Общее понятие

Редирект представляет собой промежуточное звено между запросом и его фактическим исполнением. Вместо запрошенного ресурса клиент получает указание, куда обратиться далее. Это позволяет сохранять работоспособность ссылок при изменении структуры сайта, разделять потоки пользователей, обеспечивать безопасность соединений и решать множество служебных задач. Механизм реализуется на разных уровнях: в протоколах прикладного уровня (HTTP), на уровне сетевых устройств (маршрутизация), в файловых системах (символические ссылки) и в командных оболочках.

HTTP-редиректы

Наиболее распространённый вид — перенаправления в протоколе HTTP. Сервер отвечает клиенту кодом состояния из группы 3xx и заголовком Location, содержащим новый адрес. Браузер автоматически выполняет повторный запрос.

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

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

Различие между 301 и 302 принципиально для поисковой оптимизации: постоянный редирект указывает поисковым системам на необходимость заменить старый адрес новым в индексе, временный — сохранить оба.

Цепочки и циклы

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

Применение в веб-разработке

  • Смена доменного имени или переход с HTTP на HTTPS.
  • Объединение адресов с www и без него (канонизация).
  • Перенос страниц при реструктуризации сайта.
  • Сокращение ссылок через промежуточные сервисы.
  • Разграничение доступа: неавторизованный пользователь перенаправляется на страницу входа.
  • Географическое и языковое перенаправление посетителей.

Редиректы в сетях и операционных системах

В компьютерных сетях перенаправление реализуется маршрутизаторами: таблица маршрутизации определяет, куда передать пакет. Протокол ICMP способен сообщать отправителю о необходимости сменить маршрут (ICMP Redirect).

В файловых системах аналогом служат символические ссылки (symlink) — специальные файлы, содержащие путь к другому объекту. В Unix-подобных системах они создаются командой ln -s, в Windows — ярлыками и точками повторной обработки (reparse points).

В командных оболочках Unix существует оператор перенаправления потоков ввода-вывода: символы >, >>, <, | направляют данные между программами и файлами. Это иное значение термина, относящееся к потокам, а не к адресам.

Влияние на поисковые системы

Поисковые системы учитывают редиректы при построении индекса. Постоянные перенаправления передают ссылочный вес (PageRank и аналоги) новому адресу; временные — как правило, нет. Ошибочно настроенные или зацикленные редиректы приводят к выпадению страниц из индекса и снижению позиций. Специалисты по SEO рекомендуют минимизировать число промежуточных переходов и использовать коды, соответствующие характеру изменения адреса.

Безопасность

Открытые редиректы — уязвимость, при которой параметр адреса в URL позволяет злоумышленнику перенаправить пользователя на сторонний, в том числе вредоносный, ресурс. Такие ссылки применяются в фишинге, поскольку формально ведут на доверенный домен. Защита заключается в проверке и валидации целевых адресов на стороне сервера.

Редирект в широком смысле

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

Источники: RFC 7231 (HTTP/1.1: Semantics and Content), RFC 7538 (HTTP Status Code 308), документация MDN Web Docs, материалы по поисковой оптимизации и сетевому администрированию.