301 редирект — это постоянное перенаправление: сервер сообщает браузеру и поисковому роботу, что страница навсегда переехала на новый адрес, и передаёт новому URL накопленный «вес» старого. Это главный инструмент при смене адресов страниц, склейке зеркал и переезде сайта — и одна из самых частых точек, где сайты теряют позиции из-за ошибок настройки. В гайде: когда нужен именно 301, примеры кода для .htaccess и nginx под шесть типовых сценариев, способы проверки и разбор ошибок.
Что такое 301 редирект простыми словами
Когда браузер или робот запрашивает страницу, сервер отвечает кодом состояния. Код 301 (Moved Permanently) означает: «этого адреса больше нет, навсегда; вот новый». Посетитель перенаправляется автоматически и обычно ничего не замечает, а поисковик со временем заменяет в выдаче старый URL на новый и передаёт ему накопленные сигналы — ссылки, историю, поведенческие метрики.
Важно отличать серверный редирект от подделок под него: перенаправление JavaScript-скриптом или метатегом refresh работает для людей, но поисковики обрабатывают его хуже и медленнее. Для SEO-задач используется именно серверный ответ 301.
301, 302, 307, 410: какой код когда
Коды перенаправления часто путают, а цена ошибки — потерянный вес страниц:
| Код | Что говорит поисковику | Когда применять |
|---|---|---|
| 301 | Переехал навсегда, вес передать новому URL | Смена адреса, склейка зеркал, переезд домена |
| 302 | Переехал временно, старый URL сохранить в индексе | Акционная подмена страницы, A/B-тест, техработы |
| 307 | Временно, метод запроса не менять | Технические случаи; для SEO аналог 302 |
| 410 | Страница удалена насовсем, замены нет | Удалённый контент без релевантной замены |
Практическое правило: если возврата к старому адресу не планируется — всегда 301. Если страница удалена и перенаправлять некуда — честный 410 лучше, чем редирект «лишь бы куда»: он быстрее выведет URL из индекса и не размоет релевантность других страниц.
Когда нужен 301 редирект: 6 типовых сценариев
- HTTP → HTTPS. После установки SSL-сертификата все http-адреса должны навсегда вести на https-версии.
- Склейка www-зеркал. Сайт с www и без — для поисковика два разных ресурса; одно из зеркал перенаправляется на главное. Подробно мы разбирали это в статье про зеркала сайта.
- Слэш в конце URL.
/pageи/page/— формально разные адреса и потенциальные дубли; выбирается один вариант, второй редиректится. - Смена адреса страницы. Переименовали раздел, изменили структуру URL — каждый старый адрес ведёт на свой новый.
- Переезд на новый домен. Постраничный 301 со старого домена на новый — единственный способ переехать без обнуления SEO-истории.
- Удаление страниц. Если у удалённой страницы есть близкая по смыслу замена — 301 на неё; если нет — 410, а не редирект на главную.
Настройка в .htaccess (Apache)
Файл .htaccess лежит в корне сайта на большинстве виртуальных хостингов. Примеры под сценарии выше:
RewriteEngine On
# HTTP -> HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# www -> без www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
# Один URL -> другой
Redirect 301 /staraya-stranica/ https://site.ru/novaya-stranica/
# Убрать слэш в конце (кроме существующих каталогов)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
# Или наоборот: добавить слэш всем страницам без него
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
# index.php и index.html -> главная (частый дубль)
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.(php|html)
RewriteRule ^index\.(php|html)$ / [R=301,L]
# Переезд на новый домен (постранично)
RewriteRule ^(.*)$ https://new-site.ru/$1 [R=301,L]
Два момента, которые экономят часы отладки: правила выполняются сверху вниз, и порядок имеет значение (сначала склейка протокола и хоста, потом точечные редиректы); а флаг L останавливает обработку — без него правила могут сработать цепочкой.
Мини-шпаргалка по синтаксису, чтобы читать и править правила осознанно:
| Символ | Значение |
|---|---|
^ и $ |
Начало и конец адреса |
(.*) |
«Захватить любую часть URL» — она подставится как $1 |
[R=301,L] |
Код редиректа + «последнее правило, дальше не обрабатывать» |
[NC] |
Без учёта регистра |
RewriteCond |
Условие: правило сработает, только если условие выполнено |
Настройка в nginx
На nginx правила задаются в конфигурации сервера (файлы в /etc/nginx/), и синтаксис другой:
# HTTP -> HTTPS
server {
listen 80;
server_name site.ru www.site.ru;
return 301 https://site.ru$request_uri;
}
# www -> без www (для HTTPS)
server {
listen 443 ssl;
server_name www.site.ru;
return 301 https://site.ru$request_uri;
}
# Один URL -> другой
location = /staraya-stranica/ {
return 301 /novaya-stranica/;
}
# Массовые редиректы по шаблону
rewrite ^/old-catalog/(.*)$ /catalog/$1 permanent;
После правок конфиг проверяется командой nginx -t и перезагружается nginx -s reload. Если правите не сами — этот блок можно отправить разработчику или в поддержку хостинга как готовое ТЗ.
Редиректы без доступа к серверу
- CMS. У популярных систем есть модули и плагины редиректов — правила задаются из админки, без файлов конфигурации. Это удобно для точечных перенаправлений, но массовые правила лучше держать на уровне сервера: плагин срабатывает позже и медленнее.
- Панель хостинга. Большинство панелей управления имеют раздел «Перенаправления» — под капотом они пишут те же правила в конфигурацию.
- Статические сайты. Правила задаются файлом конфигурации хостинга или CDN; сами страницы при этом не участвуют — редирект отрабатывает до отдачи контента.
Как проверить, что редирект работает
Настроили — проверьте, не доверяя браузеру (он кэширует редиректы):
- curl в терминале:
curl -I http://site.ru/staraya-stranica/— в ответе должны быть строкаHTTP/1.1 301и заголовокLocation:с новым адресом. Вот реальная проверка склейки зеркал этого сайта:
$ curl -I http://www.seoreach.ru/blog/
HTTP/1.1 301 Moved Permanently
Location: https://seoreach.ru/blog/
Один запрос — и видно всё: код именно 301, цель — конечный адрес (протокол и хост склеиваются за один прыжок, без цепочки www → https://www → https). Прогоните так каждый вариант своего адреса.
2. Онлайн-чекеры редиректов покажут всю цепочку и коды каждого шага — удобно для массовой проверки списка URL.
3. Яндекс Вебмастер и Search Console: инструменты проверки ответа сервера покажут, что видит именно робот; после массовых редиректов следите за разделом переиндексации — старые URL должны постепенно смениться новыми.
Частые ошибки — и чем они кончаются
- Цепочки редиректов.
http://www→https://www→https://— три прыжка вместо одного. Каждый шаг замедляет робота и подъедает передаваемый вес. Правильно: любой вариант адреса ведёт на конечный за один прыжок. - Циклы. Страница A ведёт на B, B — обратно на A: сайт падает с ошибкой «слишком много перенаправлений». Лечится проверкой порядка правил.
- 302 вместо 301. Временный код не передаёт вес и оставляет старый URL в индексе. Классическая ошибка настроек «по умолчанию» — всегда проверяйте код фактического ответа.
- Всё на главную. Массовый редирект удалённых страниц на главную поисковики расценивают как мягкое 404: вес не передаётся, релевантность размывается. Редиректить — на близкие по смыслу страницы, остальное — 410.
- Редирект без учёта GET-параметров. Метки вроде
?utm_source=должны переживать перенаправление, иначе ломается аналитика рекламных кампаний — проверьте на URL с параметрами (подробнее — в статье про GET-параметры).
Массовый переезд: как составить карту редиректов
Когда меняется структура всего сайта, точечные правила не спасут — нужна карта редиректов. Порядок такой:
- Выгрузите все старые URL — из Вебмастера/GSC (что знает поисковик), из аналитики (куда реально ходят люди) и краулером по сайту. Три списка не совпадут — нужен их объединённый вариант.
- Каждому старому URL назначьте новый в таблице «откуда → куда». Правило соответствия: максимально близкая по смыслу страница; категория — в категорию, карточка — в карточку или её категорию.
- Сверните таблицу в шаблоны. Если структура менялась закономерно (
/old-catalog/x→/catalog/x), сотни строк превращаются в одно правило с регулярным выражением; остаток — точечными строками. - Проверьте выборку до и весь список после переезда — чекером по объединённому списку из шага 1, включая страницы с параметрами.
- Не удаляйте старую карту. Файл «откуда → куда» пригодится, когда через полгода что-то «вдруг» отвалится в аналитике.
301 и SEO: что происходит с весом и позициями
Современные поисковики передают через 301 практически весь накопленный авторитет страницы, но не мгновенно: пока роботы переобходят старые адреса и склеивают их с новыми, позиции могут колебаться. Ориентир — от пары недель до пары месяцев на полную склейку в зависимости от размера сайта и частоты обхода; ускоряет процесс отправка ключевых URL на переобход в Вебмастере.
Главное правило: 301 — это не «магия переноса позиций», а честное уведомление поисковика. Если новая страница хуже отвечает на запрос, чем старая, редирект не удержит позиции — контент по-прежнему решает.
Чек-лист настройки 301 редиректа
- Выбран правильный код: навсегда — 301, временно — 302, удалено без замены — 410.
- Любой вариант адреса ведёт на конечный URL за один прыжок (без цепочек).
- Склейка протокола и www настроена на уровне сервера, а не плагином.
- Постраничные редиректы ведут на релевантные страницы, а не на главную.
- GET-параметры переживают перенаправление.
- Ответ проверен через curl или чекер: код именно 301, Location корректен.
- Внутренние ссылки сайта обновлены на новые адреса (редирект — для внешних ссылок и индекса, а не для собственной навигации).
- Ключевые старые URL отправлены на переобход в Вебмастере.
301 редирект — типичная «мелочь», в которой прячется заметная доля SEO-проблем: цепочки, циклы и 302 вместо 301 незаметны глазу, но исправно съедают позиции. Проверка редиректов входит в наш аудит сайта — вместе с остальной технической базой: индексацией, дублями, скоростью. А начать можно с бесплатного экспресс-аудита — покажем, что с редиректами и техникой у вашего сайта прямо сейчас.