Правильно настроенный 301 редирект передаёт новому адресу почти весь вес старого, поэтому позиции после переезда проседают временно, обычно на две-четыре недели, и возвращаются. Трафик теряют не из-за самого редиректа, а из-за ошибок вокруг него: всё перенаправили на главную, получились цепочки из трёх прыжков, в меню остались старые ссылки, а в sitemap старые URL. Ниже разбираем, чем 301 отличается от 302 и 308, в каких случаях он нужен, как прописать правила в .htaccess и nginx и как убедиться, что всё сработало.

Код ответа сервера сообщает браузеру и поисковику, что страница переехала, и как к этому относиться. Для SEO принципиальна разница между постоянным и временным переездом: в первом случае Google постепенно заменяет старый адрес в индексе на новый, во втором продолжает держать старый и ждёт, когда тот вернётся.
| Код | Что означает | Метод запроса | Когда уместен |
|---|---|---|---|
| 301 | Постоянный переезд | Может смениться на GET | Смена URL, домена, объединение страниц, переход на https |
| 302 | Временное перенаправление | Может смениться на GET | Акции, A/B-тесты, страница временно недоступна |
| 307 | Временное, метод сохраняется | Не меняется | Формы и API, где POST должен остаться POST |
| 308 | Постоянное, метод сохраняется | Не меняется | То же, что 301, но для POST-запросов |
| meta refresh | Перенаправление на уровне HTML-страницы | Не применяется | Только без доступа к серверу; Google обрабатывает медленнее |
Для большинства сайтов выбор сводится к двум вариантам: 301 навсегда, 302 на несколько дней. Дилемма «302 или 301» решается одним вопросом: вернётся ли старый адрес. Если нет, ставьте 301. Google давно подтверждает, что оба кода передают PageRank, но с 302 поисковик дольше держит в индексе старую страницу и может вообще не переключиться на новую. Мы в Query не раз видели сайты, где после редизайна год стоял 302, а в выдаче продолжали висеть старые URL, отдающие 404 по клику.
Meta refresh и JavaScript-перенаправления Google тоже понимает, но обрабатывает медленнее и не всегда. Это запасной вариант для конструкторов сайтов без доступа к конфигурации сервера, не основной инструмент.
Сама строка в конфигурации пишется за минуту. Позиции теряют на подготовке, поэтому последовательность имеет значение.

На Apache редиректы живут в файле .htaccess в корне сайта, на nginx в конфигурации сервера (nginx.conf или файл сайта в sites-available). После правок nginx нужно перезагрузить командой nginx -s reload, Apache подхватывает .htaccess сразу.
Одна страница на новый адрес:
Redirect 301 /staraya-stranica/ https://site.ua/novaya-stranica/
Весь сайт с http на https и на версию без www одним правилом:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://site.ua/$1 [R=301,L]
Переезд на новый домен с сохранением путей:
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.ua$ [NC]
RewriteRule ^(.*)$ https://new-site.ua/$1 [R=301,L]
Отдельная страница:
location = /staraya-stranica/ { return 301 https://site.ua/novaya-stranica/; }
Весь домен, http и www вместе:
server {
listen 80;
server_name old-site.ua www.old-site.ua;
return 301 https://new-site.ua$request_uri;
}
В nginx правила через return 301 выполняются быстрее, чем rewrite, и именно их стоит брать для массовых переездов. Для WordPress и других CMS есть плагины редиректов, но для сотен адресов правило на уровне сервера надёжнее и не нагружает PHP на каждом запросе.
Самый быстрый способ: в терминале выполнить curl -I https://old-site.ua/staraya-stranica/. В ответе должна быть строка HTTP/2 301 и заголовок location: с конечным адресом. Если за первым 301 идёт ещё один 301 или 302, это цепочка, и её нужно сократить до одного прыжка. Команда curl -IL покажет всю цепочку сразу.
Для массовой проверки прогоните старый список URL через Screaming Frog в режиме List: он покажет код ответа, конечный адрес и количество прыжков для каждой строки. Бесплатных онлайн-чекеров редиректов тоже хватает, для десятка адресов их достаточно.
В Search Console смотрите два отчёта. «Страницы» (индексирование) покажет, не зависли ли старые адреса в категории «Страница с переадресацией» без индексации новой. «Эффективность» через две-три недели должна показать, что клики с новых адресов восстановились до уровня старых. Инструмент проверки URL позволяет отдельно посмотреть, как Googlebot видит конкретный адрес и какую страницу считает канонической.

Google рекомендует держать 301 редиректы минимум год: примерно столько нужно, чтобы поисковик заново обошёл все старые адреса, перенёс сигналы и перестал к ним возвращаться. На практике мы советуем не убирать их вообще, пока жив старый домен или пока на старые адреса есть переходы. Внешние ссылки с других сайтов никто переписывать не будет, и каждая из них через год так же упрётся в старый адрес.
Исключение: технические правила, которые создают нагрузку или конфликтуют с новой структурой. Их пересматривают через год по серверным логам: если на адрес никто не заходил 12 месяцев, правило можно убрать без последствий.
robots.txt, и вес передаётся в никуда.Если на сайте сотни адресов и нет разработчика, который знает конфигурацию сервера, безопаснее отдать переезд в работы по технической доработке сайта: карта редиректов, серверные правила и проверка после запуска там идут одним пакетом.
curl -I на отсутствие цепочек.