Перенаправление в информационных системах¶
Редирект (от англ. redirect — «перенаправление») — механизм автоматического перенаправления пользователя или программы с одного адреса (URL, сетевого адреса, файла) на другой. Применяется в веб-технологиях, сетевых протоколах, файловых системах и операционных средах. В узком смысле под редиректом чаще всего понимают HTTP-перенаправление — ответ веб-сервера, предписывающий клиенту обратиться по новому адресу.
¶Общее понятие
Редирект представляет собой промежуточное звено между запросом и его фактическим исполнением. Вместо запрошенного ресурса клиент получает указание, куда обратиться далее. Это позволяет сохранять работоспособность ссылок при изменении структуры сайта, разделять потоки пользователей, обеспечивать безопасность соединений и решать множество служебных задач. Механизм реализуется на разных уровнях: в протоколах прикладного уровня (HTTP), на уровне сетевых устройств (маршрутизация), в файловых системах (символические ссылки) и в командных оболочках.
¶HTTP-редиректы
Наиболее распространённый вид — перенаправления в протоколе HTTP. Сервер отвечает клиенту кодом состояния из группы 3xx и заголовком Location, содержащим новый адрес. Браузер автоматически выполняет повторный запрос.
¶Коды состояния
| Код | Название | Назначение |
|---|---|---|
| 301 | Moved Permanently | Постоянное перенаправление, передаёт «вес» ссылки |
| 302 | Found | Временное перенаправление |
| 303 | See Other | Перенаправление с заменой метода на GET |
| 307 | Temporary Redirect | Временное с сохранением метода запроса |
| 308 | Permanent 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, материалы по поисковой оптимизации и сетевому администрированию.