Elido
6 мин чтенияИнженерия

301 против 302 редиректов: какой использовать для коротких ссылок

301 - постоянный редирект, передающий сигналы ранжирования; 302 - временный и обычно нет. Что это значит для коротких ссылок, SEO и кэширования.

Marius Voß
DevRel · edge infra
Постоянный редирект 301, передающий сигнал ранжирования и кэшируемый, рядом с временным редиректом 302, остающимся редактируемым, в фирменной палитре Elido

Редирект 301 постоянный, а 302 временный - и для сервиса сокращения URL это однословное различие определяет, передают ли ваши ссылки сигналы ранжирования, насколько агрессивно их кэшируют браузеры и можете ли вы безопасно изменить их назначение позже. 301 говорит: «это переехало навсегда, отправьте SEO-ценность на новый адрес». 302 говорит: «это объезд, сохраните оригинал». Оба доставляют посетителя в одно место - просто рассказывают машинам две противоположные истории.

Для коротких ссылок выбор неочевиден, и популярный совет - «всегда используйте 301 для SEO» - достаточно часто оказывается неверным, чтобы быть опасным. 301 жёстко кэшируется браузерами, что отлично для скорости и ужасно в тот день, когда нужно перенаправить редактируемую ссылку. Реальный ответ зависит от того, является ли ссылка постоянной или редактируемой, - и об этом этот пост на самом деле.

Я работаю над путём редиректа, поэтому буду держаться ближе к тому, что происходит на уровне протокола, а не в SEO-фольклоре. Если хотите сначала посмотреть на общую картину, статья вредят ли сервисы сокращения URL для SEO охватывает сторону репутации, а достижение p95 менее 15ms для редиректов - сторону скорости. Здесь мы сосредоточены на коде состояния.

Что такое редирект 301#

301 - это код состояния «Moved Permanently» («Перемещено постоянно»). Когда сервер отвечает на запрос кодом 301 и заголовком Location, он делает весомое заявление: этот ресурс теперь постоянно находится по новому URL, и новый следует считать каноническим.

Из этого заявления следуют два последствия. Поисковые системы передают сигналы ранжирования - авторитет и обратные ссылки, накопленные старым URL, - на место назначения. Именно поэтому 301 является стандартным решением для миграций сайтов и переключений на HTTPS. Браузеры кэшируют редирект, иногда очень надолго, поскольку «постоянный» воспринимается буквально. В следующий раз, когда посетитель перейдёт по ссылке, браузер может даже не обращаться к вашему серверу - он сразу прыгает на кэшированное место назначения. Механика подробно описана в руководстве MDN по HTTP-редиректам, а исходное определение - в RFC 7231, раздел 6.4.2.

Это кэширование - преимущество для постоянной ссылки и ловушка для редактируемой. Запомните это - это ключ к решению для короткой ссылки.

Что такое редирект 302#

302 - это «Found» («Найдено»), временный редирект. Он отправляет посетителя дальше точно так же, как 301, но сообщение машинам противоположное: это краткосрочное соглашение, исходный URL вернётся, поэтому сохраните его в индексе и не кэшируйте редирект как постоянный.

Стоит упомянуть более точный родственный код. 307 - строгий временный редирект: то же намерение, что и у 302, но он гарантирует сохранение HTTP-метода, поэтому POST остаётся POST. Для коротких ссылок, которые являются обычными GET-запросами, 302 и 307 неотличимы на практике. Различие значимо для API и форм, а не для маркетинговой ссылки. Для формального определения RFC 7538 определяет постоянный вариант 308, а временный 307 стоит рядом с ним.

Главное свойство 302 - он не прилипает. Браузеры перепроверяют его, что означает: в день изменения места назначения возвращающиеся посетители сразу следуют новому адресу. Никакого кэшированного объезда к старому месту.

301 против 302 для SEO: какой передаёт ссылочный вес#

Вот часть, которую все ищут на самом деле. Классическое правило - 301 передаёт сигналы ранжирования, а 302 нет. Это было строго верно годами и по-прежнему является безопасным допущением для планирования. Google с тех пор заявил, что 301 передают сигналы ранжирования и что устойчивые 302 в конечном счёте тоже - но «в конечном счёте» делает много работы, а вы не контролируете сроки.

Поэтому практическое SEO-резюме умещается в одну таблицу.

Свойство301 (постоянный)302 (временный)307 (временный, строгий)
Передаёт сигнал ранжированияДа, полностью и быстроМедленно, только если устойчивыйМедленно, только если устойчивый
Поисковая система сохраняет старый URL в индексеНет, заменяет на целевойДа, ожидает возвратаДа, ожидает возврата
Кэширование браузеромАгрессивное, может залипатьНе кэшируется как постоянныйНе кэшируется как постоянный
HTTP-метод сохраняетсяНе гарантированоНе гарантированоГарантировано
Подходит дляОкончательного перемещенияВременного перемещенияВременных перемещений для POST/API

Вывод не «301 хорошо, 302 плохо». Вывод - «соответствуйте коду реальности». Если перемещение постоянное, 301 чисто и быстро передаёт сигнал. Если временное, 302 сохраняет место исходного URL в индексе. Использовать 301 для чего-то, что вы отмените, или 302 для чего-то постоянного - вот как редиректы тихо обходятся ценой ранжирования.

Подвох с короткими ссылками: кэширование против редактируемости#

Теперь примените всё это к короткой ссылке, где правила сталкиваются.

Лучшая функция управляемой короткой ссылки - вы можете изменить её место назначения после того, как поделились ею. Печатный флаер, QR-код на упаковке, ссылка в запланированном посте - вы не можете отозвать их, но можете перенаправить ссылку, которую они несут. Эта редактируемость ценнее маргинального SEO-выигрыша для большинства маркетинговых ссылок, и стратегия предотвращения ссылочного гниения целиком на ней строится.

Жёстко кэшированный 301 нарушает это обещание. Если браузер посетителя закэшировал 301 на старое место назначения, перенаправление ссылки ничего ему не даст - он продолжит попадать на устаревшую страницу, пока кэш не истечёт, а вы не можете это принудить. Именно этого и избегает 302. Поскольку браузер никогда не считает 302 постоянным, ваше изменение вступает в силу для всех при следующем клике. Вот почему многие сервисы сокращения, включая наш, по умолчанию используют для редактируемых ссылок временный редирект: ссылка остаётся под вашим контролем. Уровень редиректа разрешает текущее назначение при каждом запросе, поэтому изменение вступает в силу в момент сохранения - стратегия кэширования за этим описана в нашем уровне кэша для редиректов.

Если вы хотите ссылки, которые остаются редактируемыми и при этом разрешаются менее чем за десять миллисекунд, создайте бесплатный воркспейс Elido и создайте свою первую короткую ссылку.

Какой редирект использовать для коротких ссылок#

Отбросьте теорию - всё сводится к одному вопросу: может ли когда-нибудь измениться место назначения этой ссылки?

  • Никогда не изменится - постоянная vanity-ссылка на вашу главную страницу, вечная ссылка в книге. Используйте 301. Вы получаете полную быструю передачу сигнала ранжирования и бонус скорости от кэширования браузером, не теряя ничего, ведь вы всё равно не собирались её перенаправлять.
  • Может измениться - любая ссылка для кампании, любая редактируемая короткая ссылка, всё, что вы захотите исправить без переиздания. Используйте 302. Вы жертвуете долей немедленной SEO-передачи ради гарантии, что изменение дойдёт до каждого посетителя мгновенно.

Для подавляющего большинства коротких ссылок - URL кампаний, умных ссылок с маршрутизацией по стране или устройству, всего на пользовательском домене, которым вы активно управляете, - редактируемость побеждает, поэтому 302 является разумным выбором по умолчанию. Оставьте 301 для действительно постоянного. А если вы только начинаете, статья как сократить URL охватывает процесс создания, который стоит перед всем этим.

Как проверить, какой редирект использует ссылка#

Никогда не верьте словам сервиса на слово. Спросите ссылку напрямую с помощью HEAD-запроса:

curl -sI "https://go.yourbrand.com/spring"

Первая строка ответа - это код состояния: HTTP/2 301, HTTP/2 302 или HTTP/2 307, - а заголовок Location показывает, куда она ведёт. Если вы видите цепочку редиректов, каждый переход - это отдельный ответ, и каждый дополнительный переход добавляет задержку и шанс утечки или потери сигнала. Чистая короткая ссылка - это один переход: с короткого URL на конечное место назначения, ничего между ними. Слежение за цепочками редиректов - часть того, как короткие ссылки разрешаются изнутри, а сохранение цепочки в один переход - половина причины, по которой наша задержка редиректа остаётся низкой.

Мысленная модель - это весь пост: 301 - обещание, которое нельзя взять обратно, 302 - обещание, которое можно. Выберите то, что соответствует тому, разрешено ли ссылке меняться, проверьте через curl - и ваши редиректы будут делать то, что вы задумали, а не то, что вы предполагали.

Ещё по теме в блоге#

Попробуйте Elido

Вставьте URL - получите короткую ссылку

Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.

Бесплатно, без регистрации · 2 в день

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
301 vs 302 redirect
301 redirect
302 redirect
redirect status code
short link redirect
redirect seo

Читать дальше