Типов URL-редиректов больше, чем предполагает спор 301 против 302, и выбор неправильного незаметно лишит вас скорости или позиций. Они делятся на два семейства. Серверные HTTP-редиректы - это коды статусов, которые сервер возвращает до загрузки страницы: 301, 302, 303, 307, 308. Клиентские редиректы выполняются в браузере после загрузки страницы - тег meta refresh или переход через JavaScript. Серверные быстрее и чище для пользователей и краулеров; клиентские медленнее и слабее, и к ним прибегают только когда сервер вне досягаемости.
Я работаю над путём редиректов, поэтому буду конкретен: что делает каждый тип на уровне сети, как его читают поисковые системы и какой выбрать на практике. Если хотите детально разобрать два наиболее используемых, статья 301 vs 302 редиректы подробно рассматривает эту пару; данный материал - полная карта.
Краткий итог заранее: для постоянного перемещения используйте 301, для временного - 302, добавьте сохраняющие метод 308/307 когда POST должен выжить, и избегайте клиентских вариантов, если есть хоть какой-то сервер для настройки.
Два семейства редиректов#
Редирект - это просто инструкция перейти в другое место, но то, где именно живёт эта инструкция, меняет всё поведение.
Серверный редирект - это ответ сервера "не здесь, переходи туда" до того, как отправлен какой-либо контент страницы. Браузер получает код статуса и заголовок Location и немедленно переходит - на исходном URL ничего не загружается, поэтому это быстро и однозначно. Клиентский редирект - полная противоположность: исходная страница загружается полностью, и лишь затем мета-тег или скрипт отправляют посетителя дальше. Это означает лишнюю загрузку страницы, заметное мигание и более слабый сигнал для поисковых систем, которым нужно загрузить и иногда выполнить страницу, чтобы вообще заметить редирект. Формальные определения серверных кодов содержатся в RFC 9110, а практическое поведение браузеров описано в руководстве MDN по HTTP-редиректам.
Именно это единственное различие - до страницы или после - объясняет, почему в остальном тексте постоянно звучит: "используйте серверный редирект, когда можете."
HTTP-редиректы с кодами статусов#
Это настоящие редиректы, которые сервер возвращает в диапазоне 3xx. Важных кодов пять.
| Код | Значение | Постоянный? | Метод сохранён? | Типичное применение |
|---|---|---|---|---|
| 301 | Moved Permanently | Да | Не гарантировано | Окончательное перемещение, миграция сайта, переход на HTTPS |
| 302 | Found | Нет | Не гарантировано | Временное перемещение, редактируемые ссылки, A/B-тесты |
| 303 | See Other | Нет | Принудительный GET | Редирект на страницу результата после отправки формы |
| 307 | Temporary Redirect | Нет | Да | Временное перемещение на POST или API-эндпоинте |
| 308 | Permanent Redirect | Да | Да | Постоянное перемещение с сохранением метода |
Таблицу организуют две оси: постоянство и обработка метода. Постоянство - это SEO-ось: 301 и 308 постоянные, поэтому поисковые системы передают ранжирующие сигналы и считают цель каноническим URL, тогда как 302, 303 и 307 временные и оставляют исходный URL в индексе. Обработка метода - это инженерная ось: 307 и 308 строго сохраняют HTTP-метод, то есть POST остаётся POST, тогда как 301 и 302 исторически позволяли ему сменяться на GET. Код 303 стоит особняком - он специально создан для принудительного GET после отправки формы, чтобы обновление страницы не повторяло отправку данных. Собственная документация Google по редиректам подтверждает, что постоянные коды трактуются как сигналы канонизации.
Для обычных веб-ссылок, которые являются GET-запросами, ось методов исчезает, и вы выбираете только между постоянным и временным - это и есть выбор между 301 и 302.
Клиентские редиректы: Meta Refresh и JavaScript#
Когда нет возможности настроить сервер, остаются два варианта на уровне браузера, и оба являются компромиссом.
Meta refresh - это HTML-тег в заголовке страницы, указывающий браузеру загрузить новый URL через заданную задержку - паттерн "вы будете перенаправлены через 5 секунд". Он работает, но страница уже загружена до его срабатывания, поэтому он медленный, и поисковые системы читают его непоследовательно: мгновенный meta refresh обычно воспринимается как постоянный редирект, тогда как задержанный неоднозначен и может быть расценён как мягкая 404. JavaScript-редирект ещё слабее, поскольку срабатывает только если краулер выполняет скрипт. Google рендерит JavaScript, но с задержкой, а многие другие краулеры и вовсе не запускают его, так что редирект может быть полностью пропущен.
Честный рейтинг вариантов прост: сначала серверный 3xx, meta refresh только если вы управляете HTML, но не сервером, и JavaScript-редирект как последний вариант, когда вы не управляете ничем. Ничего из этого не относится к управляемой короткой ссылке, которая всегда использует серверный редирект - клиентские техники нужны для ситуаций вроде статического хоста без конфигурации редиректов.
Какой редирект использовать#
Сведите это к решению, которое можно принять за один проход.
- Постоянное перемещение, обычная ссылка:
301. Полный перенос ранжирования, считается каноническим. - Временное перемещение, обычная ссылка:
302. Сохраняет исходный URL в индексе и даёт возможность редактировать ссылку. - Перемещение включает POST или вызов API: используйте
308для постоянного или307для временного, чтобы метод сохранился. - После отправки формы:
303, чтобы обновление страницы не повторяло отправку формы.
Метаправило за всеми четырьмя: сопоставляйте код статуса с истинной природой перемещения - постоянное ли оно и важен ли метод. Неправильная пара - вот как редиректы незаметно теряют ранжирование или ломают форму.
Что используют короткие ссылки#
Управляемая короткая ссылка - это серверный редирект, и не случайно: это быстрое семейство, удобное для краулеров. Интересный выбор - какой именно код, и для большинства коротких ссылок ответ - 302.
На первый взгляд это звучит неверно с точки зрения SEO, пока не вспомните, для чего нужна короткая ссылка. 302 позволяет редактировать ссылку - переназначить её после публикации или рассылки - и гарантирует, что каждый клик доходит до сервера, так что ваша аналитика остаётся точной: оба преимущества потерялись бы с жёстко кешируемым 301. Полное обоснование, включая ловушку с кешированием браузера, есть в 301 vs 302 редиректы, а механика разрешения редиректа на граничном узле описана в как работают сервисы сокращения URL. Одно правило, которое действует независимо от кода: держите цепочку в один прыжок. Редирект, указывающий на другой редирект, тратит бюджет обхода и увеличивает задержку - и это быстрейший способ свести на нет то SEO-преимущество, которое короткие ссылки в целом сохраняют.
Вся карта умещается в одном предложении: серверные коды для реальных редиректов, постоянные против временных для SEO, варианты с сохранением метода для не-GET-запросов, и клиентские приёмы только когда сервер недоступен. Выбирайте по истинной природе перемещения, держите цепочку в один прыжок - и ваши редиректы будут делать то, что вы задумали.
Другие статьи блога#
Попробуйте Elido
Вставьте URL - получите короткую ссылку
Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.
Бесплатно, без регистрации · 2 в день