Сайт сделал переадресацию много раз как исправить

Причина возникновения ошибкиСайт, на который не установлен сертификат безопасности, работает по незащищённому протоколу HTTP. URL такого сайта выглядит так: http://your_site.ru. Чтобы сайт работал по защищённому соединению, нужно приобрести SSL-сертификат. Подробнее о HTTP читайте в ст…

Ошибка «Сайт выполнил переадресацию слишком много раз»

Причина возникновения ошибки

Сайт, на который не установлен сертификат безопасности, работает по незащищённому протоколу HTTP. URL такого сайта выглядит так: http://your_site.ru. Чтобы сайт работал по защищённому соединению, нужно приобрести SSL-сертификат. Подробнее о HTTP читайте в статье Для чего необходим SSL-сертификат.

При установке сертификата ваш сайт становится доступен по безопасному протоколу HTTPS и URL выглядит так: https://your_site.ru. Однако одной покупки и установки SSL-сертификата недостаточно. По умолчанию сайт по-прежнему открывается по протоколу HTTP. Чтобы ваш сайт начал работать по HTTPS, необходимо настроить редирект с HTTP на HTTPS.

Вариантов сделать редирект несколько. Всё зависит от платформы, на которой сделан сайт. Проще всего сделать редирект на WordPress с помощью плагинов. Если сайт самописный, редиректы устанавливают через конфигурационные файлы .htaccess или web.config. Также можно использовать инструмент для добавления редиректа в панели управления хостингом. Все перечисленные способы вы можете найти в разделе Редиректы.

Если редирект был сделан неправильно, у пользователя может возникнуть циклическая переадресация, которая приводит к ошибке. Как это происходит? При настройке редиректа вы задаёте перенаправление http://your_site.ru —> https://your_site.ru. Если при этом в CMS или на сайте задан параметр открывать сайт строго по протоколу http, возникает замкнутый цикл: http://your_site.ru —> https://your_site.ru —>http://your_site.ru —> https://your_site.ru>… Сервер фиксирует слишком большое количество переадресаций и выдаёт ошибку ERR_TOO_MANY_REDIRECTS.

Сайт выполнил переадресацию слишком много раз или ERR TOO MANY REDIRECTS: как исправить

Как правило, ошибка переадресации вызвана проблемами на сервере, на котором находится сайт, и исправить её может только владелец ресурса. Однако, если вы пользователь и в течение нескольких дней проблема на сайте сохраняется, вам также стоит выполнить некоторые действия на своём устройстве. Ниже мы расскажем об исправлении ошибки и со стороны владельца и со стороны пользователя.

ERR TOO MANY REDIRECTS: что делать, если я владелец сайта

  1. Подумайте, какие действия вы делали с сайтом за последнее время. Вернитесь к старой версии сайта, – если ошибка пропала, значит, новые настройки были некорректны.
  2. Проверьте настройки HTTPS. Часто ошибка ERR_TOO_MANY_REDIRECTS появляется при неправильной настройке переадресации HTTP на HTTPS. Правильно ли вы настроили редирект, можно проверить по инструкциям:

    • редирект в панели управления ISPmanager, cPanel или Plesk,
    • редирект для сайтов на WordPress.
  3. Проверьте, не влияют ли на работу сайта плагины. Иногда плагины нарушают работу сервера и могут появляться различные ошибки, в том числе и TOO MANY REDIRECTS 310. Отключите по очереди каждый плагин или переименуйте папку plugins в каталоге файлов вашего сайта на любое другое название. Если сайт заработает, удалите плагин-виновник.
  4. Если у вас кириллический домен, проверьте, как в настройках WordPress указан ваш домен. Кириллические домены хоть и удобны в использовании, однако они не соответствуют UNICODE-системе, поэтому для них создали Punycode. Именно в этой форме нужно добавлять название сайта во все настройки. Чтобы перевести кириллический домен в Punycode, используйте конвертер. Например, ваш сайт дачник.ру. В формате Punycode он будет выглядеть xn--80ahnin3d.xn--p1ag.
  5. Ошибка в конфигурационном файле. Каждая CMS имеет собственный конфигурационный файл, который использует индивидуальные правила для перенаправления. Описать все способы исправления этой ошибки невозможно. Вы можете проверить все добавленные правила переадресации и устранить конфликт, обратившись за помощью к разработчикам сайта или на тематические форумы по используемой CMS. Также вам может помочь замена текущего файла .htaccess на стандартный для используемой вами CMS. Если вы используете WordPress или Joomla, можете добавить некоторые записи в конфигурационные записи по одной из инструкций ниже.


Как исправить ошибку в WordPress

Для исправления ошибки в CMS WordPress hosting добавьте в конфигурационный файл wp-config.php, который размещён в корневой директории вашего сайта, строки:

define('FORCE_SSL_ADMIN', true);

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='on';

Для решения этой проблемы на VPS и выделенных серверах добавьте в httpd.conf (конфигурационный файл Apache) строку:

SetEnvIfNoCase X-Forwarded-Proto "https" HTTPS=on

Чтобы изменения вступили в силу, перезапустите веб-сервер Apache.


Как исправить ошибку в Joomla

Для исправления ошибки в CMS Joomla в конфигурационный файл .htaccess после строки RewriteEngine On добавьте:

RewriteCond %{HTTP:X-FORWARDED-PROTO} ^https$
RewriteRule .? - [E=HTTPS:on]

Важно

Для успешного исправления ошибки «Сайт выполнил переадресацию слишком много раз» PHP должен работать в режиме FastCGI. Подробнее о режимах работы PHP. На виртуальном хостинге по умолчанию установлен режим PHP FastCGI. На VPS-сервере этот режим также доступен.

Что делать, если я пользователь

  1. Откройте сайт в другом браузере. Если ошибка сохраняется, значит есть проблема с сервером и восстановить доступ к сайту может только владелец. Если сайт загружается, значит проблема со стороны вашего устройства. Выполните шаги описанные ниже.
  2. Очистите cookies и кэш браузера. Временные файлы сохраняют данные посещённых сайтов, чтобы в дальнейшем не тратить время на обращение к серверу, а использовать информацию с устройства. Несмотря на пользу временных файлов, бывает, что они мешают показать новую версию сайта. Если на веб-ресурсе была ошибка и владелец её исправил, пользователь может не увидеть новый вариант. Чтобы браузер обратился к серверу сайта, а не к временным данным, очистите кеш и cookies браузера.
  3. Проверьте расширения в браузере. Они могут влиять на связь браузера и сервера. Отключите недавно установленные расширения. Если сайт заработал, расширение придётся удалить.
  4. Если вы используете VPN, попробуйте зайти на сайт без него. Некоторые сайты ограничивают вход для зарубежных серверов, через которые могут работать сервисы VPN.
  5. Проверьте дату и время на устройстве. Для HTTPS-соединения важно, чтобы дата и время совпадали (хотя бы примерно) с датой и временем на сервере сайта. Если на устройстве время отстаёт или спешит, могут возникать различные ошибки, в том числе и ошибка переадресации.
  6. Если вы попробовали все вышеописанные решения и ничего не изменилось, но вы уверены, что виноват браузер, возможно, ошибка в самой программе. Удалите и заново установите браузер или сбросьте его до базовых настроек.


Как отключить или удалить расширения в браузере Google Chrome

  1. 1.

    В правом верхнем углу нажмите на три точки. В выпадающем списке нажмите Настройки:

  2. 2.

    В левом меню нажмите Расширения:

  3. 3.

    Чтобы отключить расширение, переведите переключатель влево. Если хотите удалить, нажмите Удалить:


    Как отключить или удалить расширения в браузере Google Chrome 3

Чаще всего проблема на стороне владельца ресурса и пользователь может только подождать, пока разработчики исправят ошибку на сервере.

Ошибка «Сайт выполнил переадресацию слишком много раз»

  • Причины ошибки «Сайт выполнил переадресацию слишком много раз»
  • Как исправить ошибку «Сайт выполнил переадресацию слишком много раз»

Причины ошибки «Сайт выполнил переадресацию слишком много раз»

Чаще всего эта ошибка возникает из-за  проблем при перенаправлении с HTTP на HTTPS.

Сайты, которые используют незащищенное соединение, работают по протоколу HTTP:

Чтобы сайт открывался по защищенному соединению HTTPS, нужно приобрести и установить SSL-сертификат. Далее понадобится настройка редиректа с HTTP на HTTPS. Он настраивается в панели управления или в конфигурационных файлах .htaccess и web.config, а также требуются действия в CMS (если сайт сделан с её помощью). На этом этапе можно допустить ошибки, которые приведут к проблемам с переадресацией.

Например, у пользователя сайт http://site.ru. Он приобрел SSL-сертификат и сделал редирект в конфигурационном файле. Теперь его сайт должен работать по адресу https://site.ru. При этом в CMS так и остались настройки, в соответствии с которыми сайт должен открываться по протоколу HTTP. Таким образом, сначала система, исходя из настроек .htaccess или web.config, переадресует браузер на HTTPS, потом по параметрам CMS снова переадресует на HTTP и затем система снова возвращается к настройкам конфигурационного файла и так по кругу. Образуется циклическая переадресация http://site.ru ―>  https://site.ru ―> http://site.ru ―> https://site.ru... Так появляется ошибка ERR_TOO_MANY_REDIRECTS.

Как исправить ошибку «Сайт выполнил переадресацию слишком много раз»

Обратите внимание! Чтобы ошибка «Сайт выполнил переадресацию слишком много раз» была исправлена, PHP должен работать в режиме FastCGI. На виртуальном хостинге PHP FastCGI установлен по умолчанию. На VPS этот режим также доступен к использованию.

WordPress

Если сайт сделан в CMS WordPress, добавьте в конфигурационный файл wp-config.php строки:

define(‘FORCE_SSL_ADMIN’, true);

if ($_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’) 

$_SERVER[‘HTTPS’]=’on’;

Joomla

Если сайт сделан в CMS Joomla, для исправления ошибки в конфигурационный файл .htaccess после строки RewriteEngine On добавьте:       

RewriteCond %{HTTP:X-FORWARDED-PROTO} ^https$

RewriteRule .? — [E=HTTPS:on]

VPS или выделенный сервер

Если сайт размещен на VPS или выделенном сервере, можно добавить в конфигурационный файл Apache httpd.conf строку:

SetEnvIfNoCase X-Forwarded-Proto «https» HTTPS=on

Перезапустите веб-сервер Apache, чтобы изменения вступили в силу.

Если вы видите ошибку Слишком много перенаправлений (ERR_TOO_MANY_REDIRECTS) в своем веб-браузере, значит что-то пошло не так. Также эта ошибка сопровождается сообщением Эта веб-страница имеет цикл перенаправления (This webpage has a redirect loop) и она блокирует загрузку сайта.

Ошибка Слишком много перенаправлений означает, что сайт продолжает циклично перенаправляться между разными адресами и это может никогда не прекратиться. Ваш браузер защищает вас от этого, разрешая только определенное количество перенаправлений (часто около десяти), прежде чем он «устанет» от этого и не выдаст данную ошибку.

Ошибка о цикличных перенаправлениях по-разному проявляется в разных браузерах:

Эта страница не работает (This page isn’t working)
{domain} перенаправил вас слишком много раз. ({domain} redirected you too many times.)
Или
Эта веб-страница имеет цикл перенаправления (This webpage has a redirect loop)
Попробуйте очистить ваши куки. (Try clearing your cookies.)
ERR_TOO_MANY_REDIRECTS

Google Chrome

Страница не перенаправляет должным образом (The page isn’t redirecting properly).
Произошла ошибка при подключении к {domain}. Эта проблема иногда может быть вызвана отключением или отказом принимать куки. (An error occured during a connection to {domain}. This problem can sometimes be caused by disabling or refusing to accept cookies.)

Mozilla Firefox

Safari не может открыть страницу (Safari Can’t Open the Page).
При попытке открыть {domain} произошло слишком много перенаправлений. Это может произойти, если вы открываете страницу, которая перенаправляется на другую страницу, которая затем перенаправляется на исходную страницу. (Too many redirects occurred trying to open {domain}. This might occur if you open a page that is redirected to open another page which is then redirected to open the original page.)

Safari

Очень часто это является результатом конфликтных перенаправлений, одно из которых пытается принудительно установить HTTPS (SSL) соединение, а другое – обратно HTTP (не-SSL), или между URL-адресами с www и без www.

Для таких CMS, ​​как WordPress или Magento, это решается приведением к общему конфигурации base_url или URL-адреса сайта в коде или базе данных с перенаправлением в файле .htaccess.

Как определить причину цикличного перенаправления

Вы можете следить за всеми перенаправлениями с помощью инструментов разработчика в браузере Firefox или Chrome. Эти инструменты обычно открываются нажатием клавиши F12 (или Ctrl+Shift+I). Откройте Сеть (Network), а затем перезагрузите страницу, на которой у вас возникла проблема.

После перезагрузки страницы вы увидите список перенаправлений. Проанализировав результаты, вы сможете найти «виновника» (если срабатывает перенаправление на одну и ту же страницу).

Основные типы перенаправления (код ответа состояния HTTP):

  • 301 редирект (постоянное перенаправление) – означает, что страница или элемент перемещен на постоянной основе, и браузер должен искать его в новом месте. Чаще всего записываются в файле .htaccess.
  • 302 перенаправление или редирект – это временное перенаправление, которое означает, что страница или элемент перемещен временно, и его адрес в будущем может измениться. Чаще всего записываются в коде веб-сайта.

Как исправить ошибку перенаправлений (редиректов)

Шаг №1: Очистить кэш и куки браузера

Очень часто циклические перенаправления могут вызываться файлами cookie в браузере, в которых закэшированы старые редиректы. Данные браузера, такие как история просмотров, кэш, файлы cookie и т.д., могут содержать ошибочные данные, которые вызывают ошибку ERR_TOO_MANY_REDIRECTS. Очистка этих данных – эффективный способ исправить ошибку. Чтобы очистить данные просмотра:

  • В Google Chrome нажмите Ctrl+Shift+Delete, выберите необходимые данные, время жизни данных и нажмите Очистить данные (clear data)
  • В Mozilla Firefox нажмите кнопку «Меню» и выберите «Параметры». Выберите Конфиденциальность, а затем очистить свою недавнюю историю (clear your recent history). Выберите Everything для диапазона времени, а затем нажмите Очистить сейчас (Clear Now).

После очистки данных браузера вы можете попробовать зайти на сайт и посмотреть, исчезла ли ошибка.

Шаг №2: Попробовать в других браузерах

Ошибка ERR_TOO_MANY_REDIRECTS может возникать только в браузере, который вы используете. Вы можете попробовать открыть тот же URL в другом браузере. Если ошибка не устраняется, значит проблема может возникать на стороне сервера.

Правильные настройки редиректов (перенаправлений)

Как мы уже упоминали выше, причиной ошибки могут быть неправильные настройки на вашем сайте. В основном, они касаются настроек редиректов в файле .htaccess. Данный файл – это файл конфигурации, который используется для изменения поведения сервера Apache для каждой папки на сайте или сервере. С его помощью можно редактировать только некоторые конфигурации Apache, хотя перенаправления обычно разрешается редактировать.

У вас может быть несколько файлов .htaccess, которые каскадно влияют на каталоги. Если у вас есть один .htaccess в родительском каталоге, и другой в подкаталоге, они оба будут влиять на этот подкаталог. Т.е., это может быть причиной конфликта между этими файлами на разных уровнях.

Ниже приведен ряд примеров перенаправления (редиректов) в файле .htaccess, которые обычно используются на сайтах.

Принудительный HTTPS

Приведенный ниже код сначала проверяет, поступил ли запрос на сервер с использованием HTTP или HTTPS. Если в запросе не использовался HTTPS, то конфигурация скажет браузеру перенаправить на HTTPS-версию того же веб-сайта и URL-адреса, которые были запрошены ранее:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Принудительный HTTPS при использовании прокси-сервера

Вы можете использовать прокси-сервер, например, балансировщик нагрузки или веб-брандмауэр, для которого можно настроить использование SSL (HTTPS) на внешнем интерфейсе, но не на внутреннем. Чтобы это работало правильно, вам нужно проверять не только HTTPS в запросе, но и проверять, передал ли прокси-сервер исходный HTTPS-запрос на сервер, используя только HTTP. Код ниже проверяет, был ли запрос перенаправлен с HTTPS, и, если это так, не пытается дополнительно его перенаправлять:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Перенаправление с HTTP на HTTPS в Nginx

Если на вашем веб-сервере работает Nginx, вы можете легко перенаправить весь ваш HTTP-трафик на HTTPS, добавив следующий код в файл конфигурации Nginx:

server {
 listen 80;
 server_name domain.com www.domain.com;
 return 301 https://domain.com$request_uri;
}

Замените domain.com на свой домен.

Принудительно без www

Следующий код в файле .htaccess проверяет, был ли запрошен сайт с www в начале доменного имени. Если www есть в URL, тогда он переписывает запрос и говорит браузеру перенаправить на доменное имя без www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www. [NC] RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Принудительно с www

Этот код в файле .htaccess проверяет, не было ли запрошено имя сайта с www в начале доменного имени. Если www не включен в URL, тогда он переписывает запрос и говорит браузеру перенаправить на www-версию домена:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www. [NC] RewriteRule (.*) http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Краткий итог

Если на вашем сайте есть редирект в файле .htaccess, что перенаправляет на URL, который не совпадает с тем, что находится в базе данных, вы можете получить ошибку в браузере о бесконечном цикле перенаправления (ERR_TOO_MANY_REDIRECTS), как описано выше.

Однако теперь вы знаете, как выглядят некоторые распространенные перенаправления в .htaccess. Также, с помощью данной статьи, вы сможете сами протестировать, найти причину ошибки, а также устранить ее самостоятельно.

Спасибо, что читаете нас!



  • 9562
  • Опубликовано 22/06/2019



  • Уроки программирования

Понравилась статья? Поделить с друзьями:
  • Сайт росреестра выдает ошибку
  • Сайт работает только через vpn как исправить
  • Сайт пока не может обработать этот запрос http error 500 как исправить
  • Сайт пока не может обработать этот запрос http error 500 bitrix
  • Сайт ошибочных авиабилетов