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

Содержание:

Введение

Я выполнял перенос сайтов с обычного хостинга с внешним ip адресом. Сайты работали на https. Их нужно было перенести на другой хостинг, который организован немного не стандартно. Запросы сначала приходят на сервер с nginx, работающим в режиме proxy_pass. Дальше запросы по протоколу http уходят на другой сервер, где работают уже непосредственно сами сайты. На втором сервере (бэкенд) стояла связка nginx + php-fpm.

В целом, в такой связке нет ничего необычного. Я ее повсеместно применяю там, где это имеет смысл. Это повышает удобство управления большим количеством сайтов и серверов, плюс в целом безопаснее схема. Многие зловреды, даже если пролезают на сайты, не понимают, как правильно работать в таком окружении. В общем случае  проблем не возникает при настройке.

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

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

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

Редиректы устанавливают через конфигурационные файлы .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 .

7 ответов

Ray Truemama
15.08.2016 16:38

Привет! Прежде всего стоит проверить файл .htaccess сайта. Там могут стоять правила перенаправления, которые приводят к обозначенно циклической переадресации.
Плюс в меню Сайты на Timeweb стоит проверить, не стоит ли необходимость перенаправлений в настройках сайта. Если стоит — надо отключить и проверить работу сайта…

Алимгулов Рамазан Габитович
13.12.2016 08:41

Для решения данного вопроса Вам необходимо отключить указанную опцию, выполнив следующие действия:
1) перейдите в раздел «Сайты» Панели управления: https://hosting.timeweb.ru/sites ;
2) нажмите зелёную квадратную кнопку с изображением шестерёнки, появляющуюся при наведении курсора на директорию «сайт .ru»;
3) установите переключатель «Перенаправлять на домен» в положение «Выкл.» и нажмите кнопку «Сохранить настройки».

Андрей Кузьмин
11.04.2018 19:29

Дословно и понятно! Учитесь

HARDKOD
15.01.2017 21:26

Ошибка возникает если страница на которую вы заходите выполняет несколько редиректов (перенаправлений) подряд. В зависимости от браузера это может быть 3-4-5 и более редиректов.
Возможные причины подобной ошибки:
1. Настройки в панели хостинга конфликтуют с конфигурацией на сайте.
2. Директивы в файле .htaccess (искать по вхождению Redirect, RedirectMatch, mod_rewrite RewriteCond, RewriteRule) который лежит в корневой папке сайта. Возможно вам поможет свежий файл для вашей системы управления с сайта производителя. Чтобы узнать какая у вас система можно воспользоваться скриптом https://www.hardkod.ru/node/kod
3. Настройки виртуального хоста веб-сервера (если у вас выделенный сервер)
Для apache директивы см. п2 или nginx искать вхождения rewrite
4. Модули/плагины системы управления, админки (вспомните какие недавно были установлены/обновлены, какие страницы редактировались). Например бывают модули, которые формируют адрес страницы на основании ее заголовка.
О компании > /o-kompanii
При смене заголовка — ставится редирект со старого адреса на новый.
О нас > /o-nas
(+ редирект с /o-kompanii на новый /o-nas)
Поэтому если поменять заголовок страницы несколько раз и в конце оставить один из первых вариантов, то вы рискуете получить цикличный редирект, примерно так:
>> редирект с /o-kompanii на /o-nas
>> редирект с /o-nas на /o-kompanii
5. Куки браузера. Да, это удивительно, но бывает для решения проблемы достаточно очистить cookie браузера.
Чтобы понять какие именно редиректы выполняются и например найти цикличный воспользуйтесь сайтом https://bertal.ru/

Теория переадресаций страниц сайта

Что будет если из адресной строки браузера запросить не действительный (ошибочный или удаленный) URL страницы? Веб сервер, будь то Apache, Nginx или их симбиоз, отдадут в ответ ошибку 404. Ошибки могут быть и другие, но остановимся на этой, как на ошибке, показывающей отсутствие запрашиваемого URL адреса.

Ошибка 404 не страшна, если был запрошен ошибочно написанный URL. Гораздо хуже, если 404 ошибку выдают на запрос URL, который существовал, но по каким, либо причинам изменился. Еще хуже (для продвижения сайта), когда этот URL был в выдаче, а теперь изменился.

С точки зрения SEO, более правильно, чтобы веб-сервер вместо 404 ошибки выдавал 301 код и переадресовывал пользователя на рабочий адрес. Код статуса HTTP 301 это и есть 301 редирект, означающий, что ресурс (страница) перемещен(а) навсегда. Посмотрим, как его сделать.

Плагин SEO Redirection

  • Страница плагина в каталоге (бесплатно): https://ru.wordpress.org/plugins/seo-redirection/
  • Адрес сайта плагина (29$): http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin

Плагин есть в двух вариантах: бесплатном и платном. Бесплатный вариант вы можете установить из административной панели на вкладке Плагины>>Добавить новый.

SEO Redirection — это плагин WordPress для управления перенаправлением 301, вы можете легко создавать и управлять перенаправлениями для своего сайта.
Этот плагин полезен, если вы хотите переносить страницы со старого веб-сайта или меняете каталог своего веб-сайта WordPress.

Плагин SEO Redirection, аналогичен предыдущим плагинам, но есть отличительная особенность. С его помощью можно все страницы сайта, переадресовать на такие же страницы, но на новом домене. Эта функция очень полезна, при переезде сайта на другой домен.

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

Самая распространенная ошибка здесь – неправильный URL-адрес в настройках конфигурации.

Предположим, например, что URL вашего сайта – , а вы перешли в раздел «Настройки» и установили его на . На большинстве хостингов можно выбирать между тем, добавлять или нет префикс к вашему доменному имени. Если вы на хостинге выбрали , а в настройках WordPress сайта указали , тогда это приведет к ошибке. Ошибка будет также, если сделать такую же операцию зеркально (на сервере с , а в настройках без ).

Когда пользователь зайдет на страницу , он будет перенаправлен по конфигурации вашего сервера на , где он будет обратно перенаправлен на из-за настроек сайта. Получается цикличная переадресация.

В этом случае для решения проблемы вам нужно привести в соответствие настройки домена сайта на хостинге и в настройках в Консоли. Перейдите в Настройки -> Общие в Консоли и измените настройки URL.

Важно: убедитесь, что в настройках вы не указали URL адрес со слешем в конце

Как изменить URL-адрес сайта, если нет доступа в Консоль

Если у вас нет доступа к Консоли WordPress, вы можете обновить эти настройки, указав их в файле . Откройте этот файл в корне сайта любым текстовым редактором (например, Notepad++). Чтобы указать настройки для URL-адресов своего сайта, просто добавьте следующие две строчки в этот файл:

define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');

Добавьте эти две строчки до комментария .

Учтите также, что вам нужно заменить значение на свой фактический URL.

Сохраните файл и перезагрузите главную страницу своего сайта. Если вы по-прежнему получаете ошибку, попробуйте в настройках добавить домен с префиксом .

Исправление других проблем с перенаправлением

Если предыдущий шаг не помог решить проблему, скорее всего, на вашем сайте возник конфликт с каким-то плагином. Некоторые плагины WordPress используют методы перенаправления для выполнения самых разных задач.

Сначала нужно выяснить, какой плагин вызывает проблему

В первую очередь обратите свое внимание на те плагины, которые вы активировали (или же обновили) прямо перед ошибкой «Too many redirects». Попробуйте отключить этот плагин через Консоль, либо переименовав/удалив папку плагина из

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

Важно! Делайте подобные процедуры на локальном сервере, а не на действующем хостинге

Исправление ошибки ERR_TOO_MANY_REDIRECTS

Если ошибка с редиректами возникает только на одном сайте, значит проблема в htaccess и нужно ждать, пока владелец сайта все починит. Если же бесконечные редиректы появились во всех браузерах и/или при заходе на любой сайт, то проблема на стороне пользователя. Ниже — советы по исправлению ошибки со стороны пользователя и со стороны владельца сайта.

Со стороны пользователя:

  1. Сверить настройки даты и времени. Неверно выставленные настройки могут вызывать бесконечную переадресацию на многих защищенных сайтах.
  2. Очистить кэш и файлы cookie. Расположение и способ очистки куки на своем браузере можно посмотреть в статье Где находятся Cookie. Можно очистить куки только для того домена, на котором появляется ошибка.
  3. Отключить все лишние плагины и расширения. В ряде случаев надстройки для браузера могут устанавливаться без ведома пользователя — стоит проверить, не активно ли чего лишнего.
  4. Если ничего не помогает и редиректы продолжаются на всех сайтах, можно полностью сбросить настройки браузера. В Google Chrome это можно сделать, введя в адресной строке chrome://settings/resetProfileSettings. Вся не сохраненная информация из браузера будет удалена.

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

Что делать владельцу сайта:

  1. Проверить корректность содержимого файла htaccess.
  2. Отключить плагины и функционал сторонних сервисов, использующие редиректы.
  3. Если недавно прописывались редиректы для чего-либо — проверить их на корректность. Особенно касается SSL и его первоначальной настройки.
  4. Очистить кэш обратного прокси-сервера, если используется (Cloudflare, Sucuri). В Cloudflare не должна быть включена опция Flexible SSL, если на сайте уже есть сертификат — иначе выйдет тот самый бесконечный цикл редиректов.
  5. Если ничего непонятно — использовать утилиту Redirect Checker. Она поможет определить, что именно и как перенаправляется. К примеру, это может быть цикличный редирект с http на https.

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

Циклическая переадресация WordPress: причины

На сайтах WordPress есть две причины появления циклической переадресации:

  • Ошибка «пилота»;
  • Работа плагина;
  • SSL путаница;
  • Проблемы на облаках.

Причина №1

Под ошибкой «пилота» я имею в виду неправильно выставленные настройки администратором сайта. И заключаются эти настройки в не правильном заполнении двух полей в общих настройках сайта (вкладка консоли Настройки>>>Общие).

Если ваш сайт работает в корневой папке домена, то поля Адрес WordPress (URL) и Адрес сайта (URL) должны совпадать до буквы.

Подкаталоги оставлю в стороне я ими не пользуюсь, поэтому опишу, как может быть. Данная ситуация более вероятна для возникновения  ошибки «ERR_TOO_MANY_REDIRECTS».

При заполнении полей 1 и 2 на срине выше (Общие настройки) появилась циклическая переадресация. Причин может быть много, вопрос не в причинах. У вас теперь нет доступа к панели сайта, а нужно поменять https на http в общих настройках. Для этого:

  • Идёте в phpadmin;
  • Ищите таблицу wp_options;
  • Открываете её кликом по названию;
  • В столбце option_value видите ваш домен с https протоколом, его нужно изменить вручную;
  • Жмёте «Изменить» и в таблице  в столбце  option_value меняете https на http;
  • Сохраняетесь и идёте на сайт.

Возникает подобная ошибочная ситуация, когда SSL реализуется отдельно от вашего сервера, например, в облаке. Или вы поторопились или неправильно настроили плагин типа SSL ( о них ниже). Полезно прочесть Русский домен на WordPress, часть 3: безопасный протокол SSL.

Причина №2

Вторая причина, установка плагина, который создаст рассматриваемую циклическую переадресацию WordPress сайта.

Чаще всего проблемы подобного рода создают плагины из группы «Redirect» и плагины вносящие свои правила в файл .htaccess сайта.

Напомню, файл (точка вначале), создается из файла коробочной версии WordPress путём простого переименования. Нужен этот файл для ручного управления работой веб-сервера Apache вашего сервера.

файл полезный, но требует знаний и аккуратной правки. Некоторые плагины дописывают в этот файл свои правила. Чаще они это делают с предупреждением администратору при настройке плагина.

Например, в прошлой статье я писал о плагине Really Simple SSL, где есть возможность включить настройку «htaccess redirect». Это создаст самую быструю переадресацию сайта при переходе на протокол . Однако настройки вашего сервера могут при таком включении создать циклическую переадресацию WordPress.

Еще пример. Все плагины безопасности WordPress дописывают в файл . Но не все плагины их оттуда выписывают, после своего удаления. Наслоение правил может привести к циклической переадресации.

Для исправления этой причины ошибки, достаточно сначала отключить проблемный плагин. Если непонятно, какой плагин создает проблему, отключать их по одному. Если потеряли вход в административную панель, отключать плагины по FTP, меняя их название (например, добавляя цифру к названию).

Найдя проблемный плагин, откройте в текстовом редакторе файл и удалите запись сделанную проблемным плагином. Найти запись легко, она будет в закомментированных строках с названием плагина. Например, так #BEGIN ReallySimpleSSL …тут запись… #END.

Удалять плагин необязательно, нужно просто исправить свою неправильно выставленную настройку.

Причина №3: SSL путаница

Очень часто при переходе на безопасный проток HTTPS после приобретения сертификата приходит циклическая переадресация WordPress.

Здесь проблема в первоочерёдности. Сначала нужно подключить SSL сертификат на вашем сервере, а потом переводить сайт на безопасный проток HTTPS и делать переадресацию HTTP на HTTPS.

И только поле завершения работ на сервере, переходить на сайт и ставить плагины группы SSL, исправляющие смешанный контент сайта. Об этом в статьях:

  • Как самостоятельно установить SSL сертификат на хостинг: бесплатный SSL сертификат на хостинг c ISP панелью
  • Как получить бесплатный сертификат SSL: центр сертификации StartSSL (StartCom
  • Оптимизация сайта после SSL сертификации: как вернуть потерянный трафик и ТИЦ
  • Как поменять абсолютные ссылки WordPress на относительные: SSL сертификация
  • Перевод сайта WordPress на HTTPS: инструкция технического перехода

Причина №4: Облака

Если вы используете облачные сервера, то при переходе на SSL на сервере, нужно изменить настройки в облачном сервисе. Например, на Cloudflare можно попробовать в настройке SSL Flexible SSL поменять на Full SSL или наоборот.

Причина №5: КЭШ

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

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

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

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

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

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

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

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

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

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

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

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

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

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

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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.  RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.  RewriteRule (.*) http://www.%{HTTP_HOST}%{REQUEST_URI} 

Краткий итог

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

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

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

Извините, вам не разрешено просматривать эту страницу

При входе в админку получал вот такое сообщение.

Для того, чтобы исключить вероятность, что с сайтом что-то случилось, я перенес еще один сайт. У него увидел эту же ошибку. Тут я крепко призадумался и начал активно искать через поиск решение. Ошибка популярная и методов ее решения предлагают очень много. Мне не помогало ничего. Я перепробовал кучу всевозможных настроек, которые предлагали в различных статьях.

Указанные выше параметры из wp-config.php изначально я добавил в самый конец файла. После того, как я их перенес выше, сразу же после настроек подключения к базе, ошибка с подключением к админке: «Извините, вам не разрешено просматривать эту страницу» исчезла. Все заработало как и должно работать. Я их перенес вот сюда.

Надеюсь, кому-то помогут мои решения. Я как-то неожиданно долго провозился с этим вопросом, хотя обычно перенос сайта на wordpress это дело 10-15 минут:

  1. Делаешь дамп базы, кладешь его сразу же в корень сайта.
  2. На новом сервере по rsync через ssh забираешь все файлы сайта.
  3. Разворачиваешь БД из дампа, не забываешь удалить его.

Дальше остается только конфиги подготовить:

  1. Nginx
  2. Php-fpm
  3. Logrotate

Ну и на самой proxy:

  1. Nginx
  2. Certbot
  3. Logrotate
  4. Fail2ban

Перечислил, чтобы самому потом не забыть 🙂

О файле .htaccess

Для управления действиями веб-сервера у владельца сайта нет прямых инструментов, кроме файла .htaccess. Это файл создан специально для управления веб-сервером Apache. Определенными директивами, написанными в этом текстовом файле, вы можете указать, как вести себя веб-серверу Apache, при запросах тех или иных URL сайта.

Примечание: Файл работает только для веб-сервера Apache.

Обычно, файл используют для глобальной переадресации с одного домена на другой при смене домена или склейке доменов с и без . Для переадресации отдельных страниц WordPress удобнее использовать специальные плагины переадресации.

Плагин Safe Redirect Manager

Настройка и управление плагина Safe Redirect Manager

Плагин Safe Redirect Manager использует функцию wp_safe_redirect, которая позволяет сделать безопасную переадресацию URL страниц сайта.

Особенности плагина Safe Redirect Manager

1. Особенность плагина, это возможность указать тип переадресации:

  • 301 – Постоянная переадресация;
  • 302- Найдено;
  • 307- Временная переадресация и т.д. (смотрим фото).

Примечание: Переадресация при помощи прямой записи в файл считается небезопасной и часто используется для взлома сайта. Использование функций WordPress считается безопасным.

2. С помощью этого плагина можно сделать перенаправление на сторонний сайт иди переадресовать все страницы одного раздела.

Заключение

И еще совет, если будете проксировать запросы в wordpress, поставьте таймауты ожидания ответа от бэкенда в nginx побольше, так как во время обновления плагинов или самого движка wordpress бэкенд может очень долго не отвечать. Я имею ввиду вот эти значения.

proxy_connect_timeout 180;
proxy_send_timeout    180;
proxy_read_timeout    180;

Если они будут слишком маленькие, то обновление будет слетать с ошибками, потому разбираться с последствиями придется.

Онлайн курс Основы сетевых технологий

Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:

  • На каком уровне модели OSI могут работать коммутаторы;
  • Как лучше организовать работу сети организации с множеством отделов;
  • Для чего и как использовать технологию VLAN;
  • Для чего сервера стоит выносить в DMZ;
  • Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
  • и многое другое.

Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .

Выводы

В этой статье я познакомил вас с четырьмя плагинами WordPress, создающими переадресацию страниц сайта. Четыре плагина я взял, для показа трех вариантов переадресации:

  • Переадресация отдельных страниц сайта (плагин Redirection);
  • Переадресация отдельных страниц и группы страниц, в пределах сайта и на сторонние сайты (плагин Safe Redirect Manager);
  • Переадресация отдельных страниц и всего сайта при смене домена (плагин SEO Redirection);
  • Автоматическая переадресация страниц сайта дающих ошибку 404 на главную страницу сайта (плагин Redirect 404 Error Page to Homepage).

Найти другие плагины переадресации WordPress вы можете на вкладке Плагины→Добавить новый, воспользовавшись поиском по запросам «Redirect», «Redirection», «301».

www.wordpress-abc.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector