Якщо ви бачите помилку Занадто багато перенаправлень (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_REDIRECTSGoogle 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. Також, за допомогою даної статті, ви зможете самі протестувати, знайти причину помилки, а також усунути її самостійно.
Дякуємо, що читаєте нас!
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…