Ошибка 301 и редирект: страница перенаправляет не туда

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Код 301 означает постоянное перенаправление. Проблемы возникают, когда редирект ведёт не туда, образует цикл (ERR_TOO_MANY_REDIRECTS) или закэширован браузером. Проверьте цепочку через curl -IL, исправьте правила в nginx или .htaccess и очистите кэш браузера.

В этой статье
  1. Что такое 301 и чем он отличается от 302
  2. Как проверить цепочку
  3. Типичные проблемы
  4. Правильные правила
  5. Проверка в браузере и после исправления
301
301 Moved Permanently / ERR_TOO_MANY_REDIRECTS
По-русскиСтраница навсегда перемещена по другому адресу.

#Что такое 301 и чем он отличается от 302

Код 301 сообщает: ресурс перемещён навсегда, используйте новый адрес в заголовке Location. Браузеры и поисковые системы запоминают 301 надолго (иногда без срока), и поэтому ошибочный редирект «залипает» даже после исправления на сервере. Код 302 (и 307) — временный, он не кэшируется так жёстко. Если вы настраиваете переезд сайта или смену протокола, нужен 301; для временных акций и A/B-тестов — 302.

Возможная причинаКак узнатьЧто делать
Бесконечный цикл (ERR_TOO_MANY_REDIRECTS)Два правила перекидывают друг на друга.Страница не открывается, curl -IL показывает повтор.Уберите одно правило или добавьте условие.
Цикл при использовании CloudflareРежим SSL Flexible, а на сервере принудительный https.Цикл на https.Включите режим Full (strict) и установите сертификат на сервере.
Редирект закэширован браузеромРаньше был 301 на другой адрес.После исправления браузер ведёт по-старому.Очистите кэш или проверьте в режиме инкогнито/curl.
Конфликт www и без wwwПравила в CMS и в сервере разные.Переход туда-сюда.Выберите основной вариант и настройте один редирект.
Неверные URL в настройках CMSВ WordPress указан другой адрес сайта.Постоянный редирект на старый домен.Проверьте siteurl и home.
Потеря параметровРедирект отбрасывает ?query=.Ссылки с метками перестают работать.Используйте $request_uri / %{REQUEST_URI}.

#Как проверить цепочку

  1. Зафиксируйте правильный адрес и направление перенаправленияВ браузере откройте старый адрес и посмотрите конечный URL после перехода. Сравните его с адресом, который должен открываться. Если вы владелец сайта, откройте инструменты разработчика клавишей F12 → «Сеть», включите сохранение журнала и обновите страницу. Выберите запрос со статусом 301 и прочитайте заголовок Location: он должен вести на нужную страницу, без лишних промежуточных переходов. Для проверки серверного ответа можно использовать curl -I https://example.com/old, заменив пример реальным адресом.
  2. Проверьте цепочку, петлю и протоколНа собственном компьютере в терминале выполните curl -IL --max-redirs 10 https://example.com/old, заменив URL своим, и просмотрите последовательность ответов HTTP/... 301 и заголовков location. Ожидается один понятный переход на работающую страницу, а не повторение исходного адреса или циклический маршрут. Не вставляйте закрытые ссылки с токенами в публичные сервисы проверки.
  3. Исправьте перенаправление только на стороне собственного сайтаАдминистратору: проверьте правила в панели системы управления сайтом и конфигурации веб-сервера. Найдите правило именно для ошибочного старого URL и исправьте адрес назначения. Перед изменением сохраните копию конфигурации; проверьте синтаксис (nginx -t или apachectl configtest в зависимости от своего сервера) и применяйте только после успешной проверки. Затем снова проверьте ответ в новой сессии. Посетителю, не имеющему доступа к сайту, достаточно сообщить владельцу два URL и время проверки.

Не доверяйте адресной строке браузера: посмотрите, что на самом деле отвечает сервер.

Linux · Терминал (Bash)Команда
Все этапы цепочки редиректов: код и Location каждого шага
curl -sIL https://example.com/old-page | grep -iE "^HTTP|^location"
Linux · Терминал (Bash)Команда
Итоговый адрес и количество переходов
curl -sIL -o /dev/null -w "%{url_effective} | кодов перехода: %{num_redirects} | итоговый код: %{http_code}\n" http://example.com/
Windows · PowerShellКоманда
Аналог в PowerShell: максимум переходов 0 покажет только первый ответ
(Invoke-WebRequest -Uri "http://example.com" -MaximumRedirection 0 -ErrorAction SilentlyContinue).Headers.Location

Если в цепочке больше двух-трёх переходов (http → https → www → слэш), объедините их в один: так быстрее и лучше для SEO.

#Типичные проблемы

#Правильные правила

nginx.conf
Перенаправление http → https с сохранением адреса и параметров
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
.htaccess
Apache: http → https и www → без www
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

После изменения проверьте цепочку curl-командами выше и очистите кэш браузера: Ctrl+Shift+Del, либо проверьте в режиме инкогнито. Для переезда страниц сохраняйте соответствие «старый адрес → новый» и не перенаправляйте всё на главную: это ухудшает индексацию.

#Проверка в браузере и после исправления

Чтобы увидеть переходы в браузере, откройте F12 → «Сеть» и включите флажок «Сохранять журнал» (Preserve log): после обновления страницы в списке останутся все ответы 301/302 по порядку. Чтобы отключить кэш редиректов на время теста, поставьте «Отключить кэш» при открытых инструментах разработчика. После исправления правил сервера браузер по-прежнему может вести по старому 301 из своего кэша, поэтому проверяйте только через curl или в новом окне инкогнито. Поисковым системам для смены адреса нужно время: следите за отчётом об индексировании в Яндекс Вебмастере и Search Console, а карту сайта (sitemap.xml) обновите так, чтобы в ней были только конечные адреса без редиректов.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.