Как исправить ERR_TOO_MANY_REDIRECTS на своем WordPress сайте
Мы сталкиваемся с массой разных ошибок, работая с нашими клиентами, и ERR_TOO_MANY_REDIRECTS – одна из достаточно распространенных. Обычно она появляется после недавних изменений на WordPress сайте, из-за неверной конфигурации редиректа на сервере или вследствие неправильных настроек сторонних сервисов. Однако не волнуйтесь, эту ошибку очень легко исправить. Ознакомьтесь с представленными ниже рекомендациями, которые подскажут вам способы решения проблемы.
Что за зверь такой: ERR_TOO_MANY_REDIRECTS?
Как и следует из названия ERR_TOO_MANY_REDIRECTS, суть ошибки заключается в том, что ваш сайт вступает в бесконечный цикл перенаправления. Обычно сайт перестает работать (URL 1 указывает на URL 2, а URL 2 указывает на URL 1, или домен редиректит вас слишком много раз), и, в отличие от других ошибок, эта проблема сама по себе не решается, а потому вам придется предпринять некоторые действия для ее исправления.
Существует несколько вариаций этой ошибки, что зависит от браузера, с которым вы работаете.
Google Chrome
В Chrome эта ошибка выводится как ERR_TOO_MANY_REDIRECTS или «This webpage has a redirect loop problem».
Текст ошибки: This page isn’t working. domain.com redirected you too many times.
Mozilla Firefox
В Mozilla Firefox ошибка выводится как «The page isn’t redirecting properly».
Текст ошибки: Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
Microsoft Edge
В Edge ошибка выводится как «Hmmm… can’t reach this page». Что, естественно, не объясняет сути проблемы.
Ниже мы приведем некоторые рекомендации, которые помогут вам исправить эту ошибку.
Google и Mozilla рекомендуют попробовать очистить cookies, что выводится в виде рекомендаций на странице с ошибкой. Cookies иногда могут содержать ошибочные данные, которые приводят к появлению ERR_TOO_MANY_REDIRECTS. Вы можете попробовать следовать этой рекомендации, даже если вы заметили такую ошибку на сайте, который вам не принадлежит (чтобы открыть к нему доступ).
Cookie файлы сохраняют статус «logged in» на сайтах, а также хранят разные настройки, и потому мы рекомендуем просто удалить файлы cookie для сайта, который привел к ошибке. Это никак не повлияет на ваши остальные сеансы и другие сайты, которые вы часто посещаете.
Выполните следующие действия, чтобы очистить cookie в Chrome.
- В Google Chrome щелкаем по кнопке с тремя точками в правом верхнем углу экрана. Переходим в Settings.
- Прокручиваем вниз и щелкаем по Advanced.
- Выбираем Content settings.
- Щелкаем по Cookies
- Выбираем See all cookies and site data
- Ищем домен, для которого выводилась ошибка ERR_TOO_MANY_REDIRECTS. Удаляем cookie, которые в настоящий момент хранятся на вашем компьютере для данного домена. Пробуем снова посетить сайт.
Чистим кэш сервера, прокси и браузера
Циклы перенаправления – это ответы, которые можно кэшировать, а потому мы рекомендуем попробовать очистить кэш на своем WordPress сайте, в сторонних прокси-сервисах и в своем браузере.
Чистим кэш сервера
Многие хостинги WordPress предлагают свои инструменты для очистки кэша на вашем WordPress сайте. Обычно это выполняется из панели управления вашего хостинга, поскольку ошибка, скорее всего, не даст вам получить доступ к консоли WordPress.
Чистим кэш прокси-сервиса
Если вы используете обратный прокси-сервер, такой как Cloudflare или Sucuri, вы можете попробовать очистить их кэш.
Cloudflare
Чтобы очистить кэш Cloudflare, зайдите в консоль сервиса, выберите Caching и щелкните по Purge Everything.
Sucuri
Чтобы очистить кэш Sucuri, войдите в консоль сервиса, выберите Performance и щелкните по Clear Cache.
Очистка кэша браузера
Если вы хотите проверить и посмотреть, связана ли проблема с кэшем браузера, вы можете просто открыть свой браузер в режиме инкогнито. Либо протестировать другой браузер, чтобы понять, пропала ли ошибка ERR_TOO_MANY_REDIRECTS.
Если проблема вызвана кэшем браузера, вы можете очистить его. Вы всегда можете найти в сети инструкции по очистке кэша используемого вами браузера.
Определяем природу цикла редиректов
Если очистка кэша не помогла, вы можете выяснить причину появления цикла перенаправления. Бесплатный инструмент Redirect Checker поможет вам понять, что именно произошло. То же самое можно сделать и через cURL.
К примеру, сайт ниже имеет цикл 301 редиректов, указывающих на исходный URL, что приводит к большой цепочке ошибочных перенаправлений. Вы можете отследить все редиректы и понять, будет ли цикл вести к исходному URL, или, возможно, это цикл «от HTTP к HTTPS», о чем мы поговорим далее.
Расширение для Chrome под названием Redirect Path также может быть очень полезным. Оно показывает информацию по всем редиректам, которые произошли на сайте (для определенного URL или страницы).
Проверяем настройки HTTPS
Еще одна причина появления ошибки ERR_TOO_MANY_REDIRECTS – это настройки HTTPS. Мы очень часто видели, что ошибка происходит после того, как пользователь перенес свой сайт на HTTPS и либо не завершил процесс, либо настроил что-то некорректно.
- Не осуществляйте переход на HTTPS без SSL-сертификата.
С этой проблемой мы сталкиваемся на регулярной основе. Если вы не установите SSL-сертификат на сервер, и при этом заставите свой сайт загружаться по HTTPS, вы тут же войдете в бесконечный цикл перенаправлений. Чтобы исправить это, просто установите SSL-сертификат.
Мы рекомендуем выполнять проверку корректности установки SSL. Сертификаты SSL/TLS требуют установки не только основного сертификата, но еще и корневого и промежуточных сертификатов (цепочки). Все они должны быть корректно установлены.
Перейдите к инструменту проверки SSL, введите свой домен, после чего выполните проверку. Для сканирования SSL/TLS конфигурации на вашем сайте может потребоваться определенное время (порядка минуты).
- Не используйте плагины для SSL, обновите ссылки, прописанные в коде.
Существуют бесплатные плагины, которые позволяют реализовать автоматическое перенаправление на HTTPS. Однако мы не советуем данный метод, поскольку сторонние плагины приводят к дополнительным проблемам и вопросам совместимости. Это лишь временное решение. Вы должны вручную обновить все HTTP-ссылки в коде. Для этого вам нужно будет выполнять поиск и замену в WordPress.
- Проверьте редиректы с HTTP к HTTPS на сервере
Вполне возможно, что правила перенаправления к HTTPS неправильно сконфигурированы на сервере.
Редирект с HTTP на HTTPS для Nginx
Если ваш веб-сервер работает на Nginx, вы можете легко перенаправить весь трафик с HTTP на HTTPS, воспользовавшись следующим кодом, который нужно добавить в конфигурационный файл Nginx. Рекомендуемый метод перенаправления WordPress на Nginx:
server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }
Редирект с HTTP на HTTPS для Apache
Если ваш веб-сервер работает на Apache, то в таком случае вы можете перенаправить ваш трафик с HTTP на HTTPS, воспользовавшись следующим кодом, который нужно добавить в файл .htaccess. Рекомендуемый метод перенаправления WordPress на Apache:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Проверяем на ошибку «Too Many HTTPS Redirects».
Возможно, у вас слишком много HTTPS перенаправлений. Проверить это можно с помощью специального инструмента, который называется Redirect mapper. Ниже приведен пример редиректов, которые неверно настроены. Вы можете видеть, что есть дублирующие HTTPS-редиректы, которые происходят как в www, так и non-www версиях.
Проверяем сторонние сервисы
Ошибка ERR_TOO_MANY_REDIRECTS нередко связана с сервисами обратных прокси, такими как, к примеру, Cloudflare. Обычно это происходит из-за включения опции Flexible SSL, если у вас уже имеется SSL-сертификат, установленный на ваш сервер с WordPress. Почему? Когда выбран пункт Flexible SSL, все запросы к вашему хостинг-серверу передаются через HTTP. Скорее всего, ваш хостинг-сервер уже имеет редирект с HTTP на HTTPS, а потому возникает цикл перенаправлений.
Чтобы исправить это, вам нужно изменить настройки Cloudflare Crypto с Flexible на Full или Full (strict).
Также вы можете использовать их правила Always Use HTTPS для страниц, чтобы перенаправлять всех пользователей на HTTPS без создания цикла. Еще одна вещь, которую нужно соблюдать при работе с Cloudflare – следовать правилам редиректа URL-адресов, используемых для переадресации. Будьте осторожны с созданием редиректа для доменов, указывающих на себя в качестве адресата. Это может вести к бесконечному редиректу.
Проверьте настройки вашего WordPress сайта
Необходимо также проверить настройки вашего WordPress сайта. Есть два поля, которые должны быть грамотно заданы. Еще одна популярная ошибка – вы используете неправильный префикс, который не отвечает вашему сайту (с www или без www).
- WordPress Address (URL): адрес, используемый для доступа к вашему блогу.
- Site Address (URL): адрес, используемый для доступа к основным файлам WordPress.
Оба URL должны совпадать, если, конечно, вы не переносили WordPress в отдельный каталог.
Скорее всего, у вас не будет доступа к консоли WordPress. Вы можете переписать эти настройки через файл wp-config.php.
Файл wp-config.php обычно располагается в корне вашего WordPress сайта. К нему можно получить доступ через FTP, SSH или WP-CLI. Чтобы переписать WP_HOME и WP_SITEURL, просто введите следующий код в начало wp-config.php, задав свой домен:
define('WP_HOME','https://yourdomain.com'); define('WP_SITEURL','https://yourdomain.com');
Ниже представлен пример того, как будет выглядеть ваш wp-config.php после всех изменений:
После ручной установки значений для URL вы можете перейти к своему сайту и проверить, пропала ли ошибка.
Временное отключение плагинов WordPress
Временное отключение плагинов WordPress может стать быстрым способом решения проблем. Если у вас есть плагины, которые делают редиректы, они могут стать причиной появления цикла перенаправлений.
Помните, что вы не потеряете никаких данных, если просто отключите плагин. Скорее всего, у вас не будет доступа к консоли WordPress, а потому вам нужно будет зайти по SFTP на сервер и переименовать папку с плагинами. Затем проверьте свой сайт еще раз.
Если метод сработал, вам нужно будет поочередно протестировать каждый установленный плагин. Переименуйте папку с плагинами обратно в plugins, после чего начните переименовывать папки отдельных плагинов до тех пор, пока не найдете виновника. Вы можете также сделать это на тестовом сайте.
Проверьте редиректы на сервере
Помимо редиректов HTTP к HTTPS на вашем сервере, вам нужно проверить, что на сервере отсутствуют другие неграмотно настроенные редиректы. К примеру, один плохой 301 редирект может привести к тому, что сайт перестанет работать. Обычно они располагаются в конфигурационных файлах вашего сервера.
Файл .htaccess для Apache
Если вы работаете с хостингом, на котором запущен Apache, вы должны проверить файл .htaccess на наличие неверных правил. Выполните шаги, представленные ниже, чтобы создать файл с нуля.
Войдите на сайт по FTP или SSH, после чего переименуйте .htaccess в .htaccess_old. В итоге у вас всегда будет резервная копия файла.
Чтобы пересоздать этот файл, вам нужно просто пересохранить свои постоянные ссылки в WordPress. Однако, если вы столкнулись с ERR_TOO_MANY_REDIRECTS, то вы, скорее всего, не имеете доступа к вашей консоли WordPress. При этом вы можете создать новый файл .htaccess и ввести в него следующий контент. Затем загрузите файл на сервер. Стандартные параметры для файла:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
В кодексе WordPress можно найти и другие примеры, в частности, стандартный .htaccess для мультисайтов.
Конфигурация Nginx
Если ваш хостинг использует Nginx, то в таком случае настроить конфигурационный файл будет несколько сложнее, поскольку конфиг может отличаться в зависимости от используемого хостинг-провайдера. Мы рекомендуем в таком случае написать в поддержку хостинга и попросить их проверить файл конфигурации на наличие вещей, которые могут вызывать цикл редиректов.
Источник: kinsta.com