301 редирект переносит вес страницы со старого адреса на новый. Это не настройка "на всякий случай": сделанный неаккуратно, он теряет часть трафика, а цепочка из трёх переадресаций подряд съедает эффект. Разбираем сценарии, код и ошибки из практики.
Вопрос всплывает в трёх ситуациях: сайт переезжает на новый домен, меняется структура адресов после редизайна или одна и та же страница оказывается доступна по четырём разным URL. Задача везде одинаковая: свести варианты к одному адресу и не потерять накопленное в поиске.
Чем 301 отличается от 302, 307 и canonical
Разница не в технике, а в том, что понимает поисковый робот.
| Инструмент | Что означает | Когда применять |
|---|---|---|
| 301 | Адрес сменился навсегда | Переезд, смена структуры, склейка зеркал |
| 302 | Временно переехали, вернёмся | Техработы, A/B-тест, временная акция |
| 307 | То же, что 302, но метод запроса сохраняется | Формы и API, где нельзя превращать POST в GET |
| 308 | То же, что 301, с сохранением метода | Постоянный переезд эндпоинтов, куда шлют POST |
| rel=canonical | Обе страницы живы, индексировать надо одну | Дубли с параметрами, версии для печати, сортировки |
Отличие canonical от редиректа: при canonical страница остаётся доступной и человек видит именно её, а редирект физически уводит на другой адрес. Поэтому canonical для дублей, которые нужны людям, а 301 для адресов, которых больше не должно быть.
Ошибка, которую видим чаще прочих: 302 там, где переезд постоянный. Хостинги и плагины ставят 302 по умолчанию, и старый адрес годами висит в выдаче.
Восемь сценариев, ради которых это делается
Склейка www и без www. Два адреса с одинаковым содержимым поиск может счесть разными сайтами. Выбираем главное зеркало, трафик со второго уводим на него.
http на https. После установки сертификата старые адреса обязаны переадресовываться, иначе получится два сайта с одинаковым содержимым.
Смена структуры адресов. Было /uslugi/lending.html, стало /services/landing/. Каждый старый адрес ведёт на свой новый, а не в общую кучу.
Переезд домена. Правило пишется так, чтобы сохранялся хвост адреса и страница попадала на свой аналог, а не на главную нового сайта.
Удалённая страница на ближайшую по смыслу. Товар снят с производства - ведём на аналог или на категорию, раздел закрыт - на родительский.
Слеш в конце адреса. /blog/301-redirect и /blog/301-redirect/ для сервера это два разных адреса. Выбираем один формат и приводим к нему всё.
Дубли с параметрами. Метки вроде ?utm_source= и параметры сортировки закрывают через canonical: редирект срежет разметку рекламных переходов.
Объединение двух сайтов. Основной сайт и лендинг на отдельном домене сводят в одно место: карта соответствий страница-в-страницу, остальное на тематические разделы.
Готовые правила для .htaccess
Apache читает правила сверху вниз, поэтому порядок важен: сначала протокол и домен, потом частные случаи.
RewriteEngine On
# 1. http -> https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# 2. www -> без www
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# 3. переезд домена целиком, с сохранением адреса страницы
RewriteCond %{HTTP_HOST} ^old-domain.ru$ [NC]
RewriteRule ^(.*)$ https://new-domain.ru/$1 [R=301,L]
# 4. страница на страницу
Redirect 301 /uslugi/lending.html /services/landing/
# 5. раздел целиком
RewriteRule ^catalog/old/(.*)$ /catalog/new/$1 [R=301,L]
# 6. добавляем слеш в конце
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
Условие !-f в последнем правиле обязательно: без него сервер начнёт добавлять слеш к картинкам и файлам стилей, и они перестанут отдаваться.
То же самое на nginx
Здесь permanent означает 301, а redirect означает 302. Перепутать легко, а последствия те же.
# www и старый домен уводим на основной адрес
server {
listen 80;
listen 443 ssl;
server_name www.example.ru old-domain.ru;
return 301 https://example.ru$request_uri;
}
server {
listen 443 ssl;
server_name example.ru;
# страница на страницу
location = /uslugi/lending.html {
return 301 /services/landing/;
}
# раздел целиком с сохранением хвоста адреса
rewrite ^/catalog/old/(.*)$ /catalog/new/$1 permanent;
}
Для простых случаев берите return 301: он не запускает разбор регулярного выражения и работает быстрее rewrite.
Ошибки, которые стоили клиентам позиций
Цепочки. Старый адрес ведёт на http-версию, та на www, та на новую структуру: три перехода вместо одного. Часть веса теряется, скорость загрузки падает на 200-500 мс. Любой старый адрес должен вести на конечный новый за один шаг.
Петли. Правило A уводит на B, B возвращает на A, браузер показывает "слишком много перенаправлений". Чаще всего возникает, когда слеш и https настраивают разные люди.
Всё на главную. Самая дорогая ошибка. При смене структуры 400 страниц отправили на /, потому что так проще. Через месяц из индекса выпало больше половины: массовую переадресацию на один адрес поиск обрабатывает как 404, вес не передаётся. Восстанавливали три месяца.
Редирект вместо 404. Магазин на 12 000 товаров переадресовывал снятые позиции в категорию. Покупатели по ссылкам из поиска попадали не туда, куда шли, и уходили. Если замены нет, честнее отдать 404 или 410.
Забыли внутренние ссылки. Меню, тексты статей и карта сайта остались со старыми адресами, и робот на каждом шаге получает переадресацию. Ссылки переписываем на конечные адреса, sitemap.xml пересобираем: подробности в статье про sitemap.xml и robots.txt.
Как проверить, что всё работает
Самый быстрый способ - командная строка:
curl -I -L https://old-domain.ru/uslugi/lending.html
Флаг -L проходит всю цепочку. Если строк HTTP/1.1 301 в выводе больше одной, цепочка у вас есть. Дальше по списку:
- Панель разработчика, вкладка Network, столбец Status: видно и код, и число переходов.
- Проверка ответа сервера в Яндекс.Вебмастере: показывает то, что видит робот, а не браузер с кэшем.
- Краулер (Screaming Frog, Netpeak Spider) с отчётом по редиректам: на сайте больше 100 страниц это единственный способ найти все цепочки разом. Остальные технические проверки собраны в материале про технический SEO-аудит.
- Логи сервера через 2-3 недели: по каким старым адресам ещё идут запросы и куда они попадают.
Отдельно проверьте, что переход отдаётся кодом 301, а не JavaScript-перенаправлением и не мета-тегом refresh: эти варианты передают вес хуже.
Что происходит с позициями и когда ждать восстановления
Первые дни после переезда трафик держится, потом начинается просадка: робот переобходит сайт и переиндексирует адреса. Спад на 10-30% в течение 2-6 недель при смене домена мы считаем нормой и предупреждаем о нём заранее.
Основная масса страниц склеивается за 2-4 недели, крупный каталог на несколько тысяч адресов - до 2-3 месяцев. Ускоряет процесс сообщение о переезде в Яндекс.Вебмастере, актуальный sitemap.xml только с новыми адресами и отказ от одновременной правки текстов.
Если через три месяца показатели не вернулись, дело обычно не в редиректах: смотрите, что ещё поменялось вместе с адресами. Тот же принцип разбирали в плане редизайна без потери позиций.
Чек-лист перед переездом
- Выгрузить все текущие адреса: из sitemap.xml, из Метрики за год и краулером по сайту.
- Составить таблицу "старый адрес - новый адрес". Главная только для тех, у кого аналога нет вообще.
- Проверить таблицу на цепочки и петли до выкладки, а не после.
- Настроить правила на тестовом окружении и прогнать краулером.
- Переписать внутренние ссылки в меню, текстах и микроразметке.
- Пересобрать sitemap.xml: в нём только адреса, отдающие 200.
- Сообщить о переезде в Яндекс.Вебмастере и обновить адрес в Метрике.
- Первый месяц раз в неделю смотреть логи и отчёт по 404.
- Старый домен продлевать, редиректы не снимать.
Если сайт заодно переезжает на другой сервер, порядок действий шире: он описан в инструкции по переносу сайта на другой хостинг. Отдельный случай - уход с конструктора, там адреса меняются почти всегда, разбор есть в статье про перенос с Тильды.
Итог для тех, кто переезжает
301 редирект решает одну задачу: сохранить накопленный вес страницы при смене её адреса. Работает он только тогда, когда переход происходит за один шаг и ведёт на осмысленную замену, а не в общую кучу. Три самые дорогие ошибки - цепочки, переадресация всего на главную и 302 вместо 301. Проверять результат надо не глазами в браузере, а кодом ответа сервера и краулером.
Переезд обычно затевают ради роста трафика, а редиректы тут только первый шаг. Что идёт дальше - структура, тексты, скорость, ссылки - расписано на странице поискового продвижения.

