Редирект — это автоматическое перенаправление браузера с одного адреса на другой. Например, вы открываете ссылку http://artgorbunov.ru и автоматически оказываетесь на https://bureau.ru/
Редиректы используют, чтобы поддержать устаревшие или изменившиеся адреса. Скажем, на сайте бюро страница с информацией о компании жила по адресу /bureau/. Мы перенесли её на адрес /about/ и настроили редирект, чтобы ссылки со старым адресом не сломались в поисковиках, закладках и истории сообщений:
https://bureau.ru/bureau/ → https://bureau.ru/about/
Также редиректы используют для сокращения ссылок:
https://bureau.ru/tiktok/ → https://bureau.ru/soviet/selected/andrey-tereschenko/sovety-prodolzheniya-tiktokov/
Или для динамических ссылок, которые меняются в зависимости от времени, клиента и других условий. Скажем, в письмах о Школе бюро нужна ссылка на последний открытый набор. Если использовать ссылку на текущий набор, когда откроется новый набор, ссылка в письме «протухнет». Чтобы обойти это, сделали «виртуальную» ссылку с редиректом на последний открытый набор:
https://bureau.ru/school/designers/enroll/ → https://bureau.ru/school/designers/20/
Через полгода:
https://bureau.ru/school/designers/enroll/ → https://bureau.ru/school/designers/21/
Условия могут быть сложнее, а редирект — частью решения. Например, ссылка на мою Бюросферу — /burosfera/me. Если пользователь не залогинен, страница показывает форму с приглашением войти в Бюросферу. Когда по ссылке переходит залогиненный в Бюросферу пользователь, он получает редирект на свою личную страницу:
https://bureau.ru/burosfera/me/ → https://bureau.ru/burosfera/vasiliy-polovnev/
И конечно, редиректы используют для правильной индексации сайта. Для поисковиков http://bureau.ru, https://bureau.ru, http://www.bureau.ru и https://www.bureau.ru — это четыре разных сайта, которые стоит индексировать отдельно. Поэтому настраивают редиректы на основной адрес:
http://bureau.ru → https://bureau.ru
http://www.bureau.ru → https://bureau.ru
https://www.bureau.ru → https://bureau.ru
Чаще всего разработчики называют «редиректом» временный редирект, а постоянный редирект называют 301‑м или перманентным редиректом
Редиректы бывают временными и постоянными. Для клиента разницы нет, он всё равно окажется по новому адресу, но есть разница для поисковиков. Если редирект временный, в поисковой выдаче останется старый адрес. Если редирект постоянный, в выдаче появится новый адрес, старый исчезнет, а поисковик будет считать новую страницу канонической.
Чаще всего разработчики называют «редиректом» временный редирект, а постоянный редирект называют 301‑м или перманентным редиректом
Редиректы бывают серверными и клиентскими. В первом случае браузер получит новый адрес напрямую от сервера, кода на бэкенде. Во втором случае браузер сначала загрузит страницу с кодом, найдёт в ней команду перенаправления и затем перейдёт по новому адресу. Поэтому серверные редиректы быстрее.
С серверными редиректами вам может помочь разработчик или девопс. Для клиентских достаточно метатега в шапке старой страницы:
<!doctype html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://bar.ru/">
<!-- ... -->
</head>
</html>
Обратите внимание на 0 в начале. Это задержка перед редиректом, заданная в секундах. Если это число достаточно мало, поисковики посчитают такой редирект постоянным.
Редиректы метатегами не сохраняют параметры изначального урла, поэтому при переадресации теряются утм‑метки:
https://foo.ru/?utm_source=vk.com → https://bar.ru/
Если без них не обойтись, можно сделать редирект Яваскриптом:
<!doctype html>
<html>
<head>
<script>
const redirect = [
'https://bar.ru/',
location.search
].filter(part => part).join('')
window.location.replace(redirect)
</script>
</head>
</html>
Это крайняя мера, когда нельзя сделать серверный или метатеговый редирект. Поисковики считают такие редиректы постоянными, плюс могут и вовсе не проиндексировать страницу — поисковому роботу нужно загрузить страницу в браузер, выполнить Яваскрипт и поймать редирект.
P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.