Як виправити помилку Занадто багато перенаправлень в браузері

Як виправити помилку Занадто багато перенаправлень в браузері



Якщо ви бачите помилку Занадто багато перенаправлень (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. Також, за допомогою даної статті, ви зможете самі протестувати, знайти причину помилки, а також усунути її самостійно.

Дякуємо, що читаєте нас!

 



Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *