301 редирект — это способ навсегда перенаправить старый адрес страницы на новый и не потерять при этом позиции в поиске. Меняете структуру URL, переезжаете на новый домен, склеиваете www и https — везде нужен именно 301. Разберу по шагам: чем он отличается от 302, как настроить в nginx, Apache, WordPress и Битрикс, и какие ошибки роняют трафик после переезда.
301 — постоянный редирект: переносит вес и позиции старого URL на новый, старый адрес выпадает из индекса. 302 — временный, вес не передаёт. Для nginx — директива return 301, для Apache — Redirect 301 или RewriteRule в .htaccess, для WordPress — плагин Redirection. Готовые правила, массовые редиректы и разбор ошибок — ниже.
Что такое 301 редирект
301 редирект — это команда серверу: страница переехала навсегда, отправляй всех на новый адрес. Когда браузер или поисковый робот запрашивает старый URL, сервер отвечает кодом 301 Moved Permanently и заголовком Location с новым адресом. Пользователь автоматически попадает на новую страницу, а поисковик понимает, что старого URL больше нет.
Ключевое слово здесь — «навсегда». Для поисковой системы 301 значит: старую страницу можно убрать из индекса, а всё, что она накопила (позиции, ссылочный вес, историю), переписать на новый URL. Именно поэтому 301 — рабочая лошадка технического SEO при любом переносе.
Проверить, какой код отдаёт страница, можно нашим инструментом проверки ответа сервера или командой в терминале:
curl -I https://site.ru/old-page/
В ответе должна быть строка HTTP/1.1 301 Moved Permanently и Location: с новым адресом. Если видите 200 OK — редиректа нет, если 302 — стоит временный вместо постоянного.
301 или 302: когда какой
Разница между 301 и 302 — в одном слове: постоянно или временно. От этого зависит, передаст поисковик вес или нет.
- 301 (постоянный). Старый адрес больше не нужен. Поисковик переносит позиции и вес на новый URL, старый выкидывает из индекса. Это то, что нужно в 95% случаев.
- 302 (временный). Страница переехала ненадолго и скоро вернётся. Поисковик держит в индексе старый адрес и вес на новый не передаёт.
Когда нужен 301: смена структуры URL, переезд на новый домен, переход на https, склейка www и без-www, удаление дубля с параметрами, объединение двух страниц в одну, замена старой статьи новой.
Когда оправдан 302: страница на техобслуживании и вернётся, временная посадочная под акцию, A/B-тест, географическое перенаправление по языку. Если сомневаетесь — почти всегда правильный ответ 301. Ошибочный 302 на месте переезда — классическая причина, по которой новый URL не набирает позиции.
HTTP/1.1 301 Moved Permanently # постоянный переезд Location: https://site.ru/new-page/ # куда ведём # вес и позиции старого URL уйдут на новый
Зачем 301 нужен для SEO
Без редиректа при переезде вы теряете всё, что страница зарабатывала месяцами. Старый URL отдаёт 404, поисковик выкидывает его из индекса вместе с позициями, а новый начинает с нуля. 301 решает эту проблему — переносит накопленное на новый адрес.
Основные SEO-задачи, где без 301 не обойтись:
- Склейка версий сайта. Сайт должен открываться по одному адресу. Все варианты —
http://,www., со слешем и без — редиректят на одну каноническую версию, чтобы не плодить дубли. - Переход на https. После установки SSL весь
http://-трафик перенаправляется наhttps://одним правилом. - Смена URL страницы. Поменяли ЧПУ или структуру каталога — старый адрес ведёт на новый, позиции сохраняются.
- Переезд на новый домен. Каждая страница старого домена редиректит на такую же страницу нового — страница в страницу, а не всё скопом на главную.
- Устранение дублей. Иногда дубль правильнее склеить редиректом, а не тегом. Где граница между 301 и canonical для дублей — разбирал отдельно.
Важный нюанс: вес по 301 передаётся не мгновенно. Яндексу и Google нужно время, чтобы переобойти старые URL и переписать данные на новые — обычно от пары недель до пары месяцев. Ускорить переобход помогает подача новых адресов в панель вебмастера и работа над индексацией.
Как сделать 301 редирект в nginx
В nginx редиректы задаются в конфиге сервера — обычно это файл в /etc/nginx/sites-available/ или внутри блока server { ... }. Основной инструмент — директива return, она быстрее и понятнее, чем rewrite.
Редирект одной страницы:
location = /old-page/ {
return 301 /new-page/;
}
Знак = означает точное совпадение адреса — правило сработает только на /old-page/ и ни на чём другом.
Редирект всего сайта на новый домен с сохранением пути и параметров:
server {
server_name old-site.ru www.old-site.ru;
return 301 https://new-site.ru$request_uri;
}
Переменная $request_uri подставляет полный путь с query-строкой — страница /catalog/shoes/?id=5 уедет на https://new-site.ru/catalog/shoes/?id=5, а не на главную.
Склейка www и https в одном блоке:
server {
listen 80;
server_name site.ru www.site.ru;
return 301 https://site.ru$request_uri;
}
Редирект по маске через rewrite — когда нужен шаблон, а не точный адрес. Например, перенос всего старого раздела /blog/ в /articles/:
rewrite ^/blog/(.*)$ /articles/$1 permanent;
Флаг permanent в rewrite — это и есть код 301. Скобка (.*) захватывает остаток пути, а $1 подставляет его в новый адрес.
После правки конфига проверьте синтаксис и примените изменения:
nginx -t
nginx -s reload
Команда nginx -t покажет ошибки до перезагрузки — не пропускайте её, иначе одна опечатка положит весь сайт. Официальный синтаксис директив — в документации nginx по модулю rewrite.
Как сделать 301 редирект в Apache и .htaccess
На Apache и большинстве виртуальных хостингов редиректы прописывают в файле .htaccess в корне сайта. Менять его можно прямо через файловый менеджер хостинга, изменения применяются сразу, без перезапуска.
Простой редирект через mod_alias:
Redirect 301 /old-page.html https://site.ru/new-page/
Слева — старый путь от корня сайта, справа — полный новый URL. Годится для точечных редиректов отдельных страниц.
Гибкие правила через mod_rewrite. Модуль включают один раз в начале файла:
RewriteEngine On
Редирект одной страницы с точным совпадением:
RewriteRule ^old-page/?$ https://site.ru/new-page/ [R=301,L]
Флаг [R=301,L] — это ядро правила: R=301 отдаёт постоянный редирект, L останавливает обработку остальных правил.
Склейка www → без www:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Переход на https:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Редирект всего старого раздела в новый с сохранением подпути:
RewriteRule ^catalog/(.*)$ /shop/$1 [R=301,L]
Строка RewriteCond задаёт условие, при котором сработает следующий за ней RewriteRule. Флаг [NC] делает проверку без учёта регистра. Файл .htaccess работает только на Apache — на nginx его не читают, там всё в конфиге сервера.
Как сделать 301 редирект в WordPress
В WordPress редирект настраивают без доступа к серверу — через плагин. Это удобно редакторам и владельцам сайтов, которые не хотят лезть в конфиги.
1. Плагин Redirection — самый ходовой вариант. Установите его, откройте «Инструменты → Redirection», нажмите «Add New» и укажите пару: старый URL в поле «Source URL», новый — в «Target URL», тип оставьте 301. Плагин ведёт лог переходов и сам ловит битые ссылки, из которых потом удобно делать редиректы.
2. SEO-плагины. Yoast SEO Premium и Rank Math умеют делать редиректы во встроенном модуле — если он уже стоит на сайте, отдельный плагин не нужен.
3. Через functions.php — когда плагины ставить нельзя. Правило добавляют в файл темы через хук:
add_action('template_redirect', function () {
if ($_SERVER['REQUEST_URI'] === '/old-page/') {
wp_redirect('https://site.ru/new-page/', 301);
exit;
}
});
Второй аргумент wp_redirect — код 301, а exit обязателен, иначе WordPress продолжит рендерить страницу. Правьте functions.php дочерней темы, чтобы правило не слетело при обновлении.
Плагин удобнее и безопаснее для большинства задач, код в теме — для тех, кто уверен в правках. Оба варианта дают полноценный 301.
Редирект в Битрикс и на Тильде
Битрикс. В 1С-Битрикс есть встроенный инструмент: «Настройки → Сайты → SEO → Редиректы» (в разных редакциях путь чуть отличается). Добавляете пару «откуда → куда» с кодом 301. Битрикс работает на Apache или nginx, поэтому массовые правила проще прописать напрямую в .htaccess в корне — синтаксис такой же, как в разделе выше. Для точечных редиректов удобнее панель, для сотен URL — файл.
Tilda и конструкторы. Здесь доступа к серверу нет, поэтому возможности ограничены платформой. В Tilda редиректы настраиваются в личном кабинете: «Настройки сайта → Редиректы» — они работают на уровне самой платформы и отдают корректный 301. На большинстве других конструкторов серверного редиректа нет вообще, доступен только переход через мета-тег refresh или JavaScript. Такой редирект хуже передаёт вес и медленнее обрабатывается поисковиком.
Вывод простой: если проект на конструкторе без нормальных редиректов, а SEO важно — это аргумент за переезд на хостинг с доступом к nginx или Apache. При самом переезде на новый домен помогает инструкция Яндекса про смену адреса сайта в Вебмастере.
Массовые редиректы и редирект директории
Когда переезжает не одна страница, а весь сайт или большой раздел, руками правила не соберёшь. Есть три подхода.
Редирект директории целиком. Если структура внутри раздела не меняется — переносится вся папка с сохранением подпути. В nginx:
rewrite ^/old-section/(.*)$ /new-section/$1 permanent;
В .htaccess:
RewriteRule ^old-section/(.*)$ /new-section/$1 [R=301,L]
Редирект с сохранением query-параметров. Чтобы не потерять UTM-метки и параметры фильтров, в nginx подставляют $request_uri или $args, в Apache mod_rewrite по умолчанию тянет query дальше, а флаг [QSA] добавляет её к новому адресу:
RewriteRule ^old/(.*)$ /new/$1 [R=301,L,QSA]
Список «старый → новый» на сотни адресов. Когда URL меняются непредсказуемо и правилом по маске их не описать, нужна таблица соответствий: каждому старому адресу — свой новый. Собирать её руками долго и легко ошибиться в синтаксисе.
Здесь выручает генератор 301-редиректов — вставляете два столбца, старые и новые URL, а на выходе получаете готовый блок правил сразу под nginx и под .htaccess. Остаётся скопировать его в конфиг или в файл — синтаксис и флаги проставятся правильно, без ручной возни. Для переезда на сотни страниц это экономит часы и снимает риск опечатки, из-за которой половина редиректов не сработает.
Частые ошибки при настройке редиректов
- Цепочки редиректов. Старый URL ведёт на второй, тот на третий, третий на финальный. На каждом шаге теряется вес и время робота. Всегда ставьте редирект сразу на конечный адрес —
A → D, а неA → B → C → D. - 302 вместо 301. При настоящем переезде временный редирект не передаёт вес, и новый URL не набирает позиции. Проверяйте код ответа через
curl -Iили сервис заголовков — там должно быть ровно301. - Циклы редиректов. Правило ведёт страницу саму на себя или два правила отправляют друг к другу. Браузер выдаёт «слишком много перенаправлений», страница не открывается. Частый источник — конфликт правил https и www в одном файле.
- Всё на главную. При переезде домена ленивый вариант — редиректить все старые URL на главную нового сайта. Поисковик считает это мягкой 404 и вес не передаёт. Нужно страница в страницу: старый
/catalog/shoes/→ новый/catalog/shoes/. - Потеря параметров и пути. Редирект без
$request_uriв nginx или без сохранения query в Apache отбрасывает всё после домена. Пользователь с ссылки на конкретный товар попадает на главную. - Редирект вместо canonical. Не всё лечится редиректом. Дубли с параметрами, сортировки и фильтры, которые ещё нужны пользователю, склеивают через rel=canonical, а не режут 301.
После настройки прогоните сайт краулером (Screaming Frog, Netpeak Spider) — он покажет все цепочки, циклы и редиректы с неверным кодом. Один прогон на старте экономит недели восстановления позиций.
Главное
301 — постоянный редирект: переносит вес и позиции старого URL на новый. Нужен при смене URL, переезде домена, переходе на https, склейке www. 302 — только для по-настоящему временных переездов.
nginx — return 301 https://site.ru$request_uri; в блоке server, для масок rewrite ... permanent. Apache — Redirect 301 или RewriteRule ... [R=301,L] в .htaccess. WordPress — плагин Redirection. Тильда — редиректы в кабинете, полноценный серверный 301 есть только на хостинге.
Главные ошибки: цепочки, случайный 302, редирект всего на главную и потеря параметров. Много адресов сразу — соберите правила через генератор 301-редиректов. Сложный переезд с большим сайтом лучше доверить SEO-специалисту, чтобы не потерять трафик.
Частые вопросы
Чем 301 редирект отличается от 302?
301 — постоянное перенаправление: старый адрес больше не нужен, поисковик переносит его вес и позиции на новый URL и со временем выкидывает старый из индекса. 302 — временное: страница переехала ненадолго, поисковик держит в индексе старый адрес и вес не передаёт. Для смены URL, переезда на новый домен, склейки www и https всегда нужен 301. 302 — только когда переезд правда временный, например на время акции или технических работ.
Как сделать 301 редирект в nginx?
Для одного адреса добавьте в конфиг сервера строку location = /old-url { return 301 /new-url; } и перезагрузите nginx командой nginx -s reload. Для целого сайта или домена используйте return 301 https://new-site.ru$request_uri; внутри блока server — так сохранится путь и параметры. Директива return быстрее, чем rewrite, и её стоит выбирать по умолчанию.
Как сделать 301 редирект в .htaccess на Apache?
В файл .htaccess в корне сайта добавьте строку Redirect 301 /old-page.html https://site.ru/new-page.html для одного адреса. Для правил с условиями и масок используйте модуль mod_rewrite: RewriteEngine On, затем RewriteRule со шаблоном и флагом [R=301,L]. Файл .htaccess работает только на Apache, изменения применяются сразу без перезапуска сервера.
Как настроить редирект в WordPress без доступа к серверу?
Самый простой способ — плагин Redirection: устанавливаете, в разделе «Инструменты → Redirection» добавляете пару «старый URL → новый URL», тип 301. Плагин ведёт лог и ловит битые ссылки. Если плагины ставить нельзя, редирект прописывают в functions.php темы через хук template_redirect с функцией wp_redirect и кодом 301.
Можно ли сделать 301 редирект на Тильде или конструкторе?
На конструкторах нет доступа к серверу, поэтому полноценный серверный 301 недоступен. В Tilda есть настройка редиректов в личном кабинете (Настройки сайта → Редиректы) — она работает на уровне платформы. На других конструкторах чаще доступен только редирект через мета-тег refresh или JavaScript, но это не полноценный 301 и вес передаётся хуже. Если SEO важно, переносите сайт на хостинг с доступом к nginx или Apache.
Почему после редиректов упали позиции?
Три частые причины. Первая — цепочки редиректов: старый URL ведёт на второй, тот на третий, вес теряется на каждом шаге. Ставьте редирект сразу на финальный адрес. Вторая — вместо 301 случайно стоит 302, и вес не передаётся. Третья — потеря параметров и пути при переезде домена: редирект на главную вместо страницы в страницу. Проверяйте код ответа через сервис проверки заголовков и следите, чтобы каждый старый URL вёл на релевантный новый.
Под рукой: генератор 301-редиректов — вставьте список старых и новых URL и получите готовые правила для nginx и .htaccess за минуту.