Якщо ви бачите помилку Занадто багато перенаправлень (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):
.htaccess
.
Крок №1: Очистити кеш і куки браузера
Дуже часто циклічні перенаправлення можуть викликатися файлами cookie в браузері, в яких закешовані старі редиректи. Дані браузера, такі як історія переглядів, кеш, файли cookie і т.д., можуть містити помилкові дані, які викликають помилку ERR_TOO_MANY_REDIRECTS
. Очищення цих даних – ефективний спосіб виправити помилку. Щоб очистити дані перегляду:
Ctrl+Shift+Delete
, виберіть необхідні дані, час життя даних і натисніть Очистити дані (clear data)
Після очищення даних браузера ви можете спробувати зайти на сайт і подивитися, чи зникла помилка.
Крок №2: Спробувати в інших браузерах
Помилка ERR_TOO_MANY_REDIRECTS
може виникати тільки в браузері, який ви використовуєте. Ви можете спробувати відкрити той же URL в іншому браузері. Якщо помилка не зникає, значить проблема може виникати на стороні сервера.
Як ми вже згадували вище, причиною помилки можуть бути неправильні налаштування на вашому сайті. В основному, вони стосуються налаштувань редиректів у файлі .htaccess. Даний файл – це файл конфігурації, який використовується для зміни поведінки сервера Apache для кожної папки на сайті або сервері. З його допомогою можна редагувати лише деякі конфігурації Apache, хоча перенаправлення зазвичай дозволяється редагувати.
У вас може бути кілька файлів .htaccess
, які каскадно впливають на каталоги. Якщо у вас є один .htaccess
у батьківському каталозі, та інший в підкаталозі, вони обидва будуть впливати на цей підкаталог. Тобто, це може бути причиною конфлікту між цими файлами на різних рівнях.
Нижче наведено ряд прикладів перенаправлення (редиректів) у файлі .htaccess
, які зазвичай використовуються на сайтах.
Наведений нижче код спочатку перевіряє, чи надійшов запит на сервер з використанням HTTP або HTTPS. Якщо в запиті не використовувався HTTPS, то конфігурація скаже браузеру перенаправити на HTTPS-версію того ж веб-сайту і URL-адресу, які були запитані раніше:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Ви можете використовувати проксі-сервер, наприклад, балансувальник навантаження або веб-брандмауер, для якого можна налаштувати використання 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]
Якщо на вашому веб-сервері працює Nginx, ви можете легко перенаправляти весь ваш HTTP-трафік на HTTPS, додавши наступний код в файл конфігурації Nginx:
server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }
Замініть domain.com
на свій домен.
Наступний код в файлі .htaccess
перевіряє, чи був запитаний сайт з www на початку доменного імені. Якщо www є в URL, тоді він переписує запит і каже браузеру перенаправити на доменне ім’я без www:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Цей код в файлі .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
. Також, за допомогою даної статті, ви зможете самі протестувати, знайти причину помилки, а також усунути її самостійно.
Дякуємо, що читаєте нас!
Якщо хочеш пізнати людину, не слухай, що про неї говорять інші, послухай, що вона говорить…
Вибачення — не означає, що ти не правий, а інша людина має рацію. Це всього…
Атмосферу паперової книги, запах свіжого чорнила і паперу, що трохи залежався, складно замінити гаджетами. Але…