ERR_TOO_MANY_REDIRECTS oznacza, że strona przekierowuje w kółko: A wysyła na B, a B z powrotem na A, aż przeglądarka się podda. Niemal zawsze winne są dwa mechanizmy przekierowań ustawione przeciwnie - najczęściej para „wymuszanie HTTPS” + Cloudflare w trybie Flexible, dwie reguły www/bez-www albo wtyczka przekierowań kłócąca się z .htaccess.
Szybka diagnoza: zobacz pętlę na własne oczy
Otwórz narzędzie typu Redirect Checker (np. httpstatus.io) albo w terminalu wykonaj curl -sIL https://twojadomena.pl | grep -i "location|HTTP/". Zobaczysz łańcuch: kto na kogo przekierowuje. Pętla https - http - https... wskazuje konflikt HTTPS; pętla www - bez www - www... - konflikt wersji adresu. Ta jedna obserwacja mówi, gdzie szukać.
Scenariusz 1: Cloudflare w trybie Flexible (najczęstszy)
W trybie SSL „Flexible” Cloudflare łączy się z Twoim serwerem po http. Jeśli serwer lub WordPress wymusza https, powstaje idealna pętla: serwer odsyła na https, Cloudflare znów przychodzi po http, i tak w kółko.
Naprawa: w panelu Cloudflare przełącz SSL/TLS na Full (strict) - wymaga ważnego certyfikatu na serwerze, który i tak powinieneś mieć (darmowy Let’s Encrypt - jak to działa, w tekście o darmowym SSL). Tryb Flexible traktuj jako historyczny.
Scenariusz 2: podwójne wymuszanie HTTPS lub www
Przekierowanie na https ustawione jednocześnie we wtyczce (np. Really Simple SSL), w .htaccess i w panelu hostingu potrafi się zapętlić, zwłaszcza gdy jedno z nich kieruje na www, a drugie na wersję bez www.
Naprawa: zostaw dokładnie jedno miejsce wymuszania - najlepiej regułę w .htaccess albo przełącznik w panelu hostingu - a pozostałe wyłącz. Sprawdź też spójność adresów w WordPressie: w Ustawieniach ogólnych oba pola (WordPress Address i Site Address) muszą mieć tę samą wersję - z www albo bez, z https.
Scenariusz 3: po migracji na nowy hosting
Po przeniesieniu strony pętla bierze się zwykle z dwóch rzeczy: w bazie został stary adres (http albo inna domena), a serwer przekierowuje na nowy - albo odwrotnie. Wykonaj podmianę adresów w bazie (wp search-replace lub wtyczka Better Search Replace) i upewnij się, że .htaccess nie zawiera reguł skopiowanych ze starego serwera, które tam miały sens, a tu już nie.
Gdy pętla dotyczy tylko wp-admin lub wp-login
Logowanie w pętli przy działającym froncie to klasyka po ręcznych zmianach adresu strony. Sprawdź w wp-config.php, czy ktoś nie zaszył define('WP_HOME',...) i define('WP_SITEURL',...) z innym wariantem adresu niż w bazie - te stałe nadpisują ustawienia z panelu. Ujednolić i po sprawie.
Na koniec: wyczyść cache
Przeglądarka zapamiętuje przekierowania 301. Po naprawie sprawdzaj stronę w trybie prywatnym albo wyczyść cache przeglądarki - inaczej możesz oglądać pętlę, której już nie ma. To samo dotyczy cache wtyczek i serwera (LiteSpeed, Cloudflare - „Purge cache”).
Najczęstsze pytania
Strona działała latami i nagle pętla - skąd?
Coś się zmieniło dziś: aktualizacja wtyczki bezpieczeństwa, włączenie proxy/CDN, zmiana ustawień SSL na hostingu. Cofnij ostatnią zmianę - to niemal zawsze ona.
Czy pętla przekierowań szkodzi SEO?
Tak - Googlebot nie może pobrać strony, dokładnie jak użytkownik. Kilka godzin nie zaszkodzi; kilka dni spowoduje wypadanie adresów z indeksu. Mechanizm jest ten sam co przy każdej niedostępności - opisujemy go w tekście zmiana hostingu a SEO.
ERR_TOO_MANY_REDIRECTS tylko u mnie, u innych działa?
Stare przekierowanie w cache Twojej przeglądarki albo cookies z pętli. Tryb prywatny lub wyczyszczenie danych strony rozwiązuje sprawę.
Podsumowanie
Znajdź parę mechanizmów, które przekierowują przeciwnie - Cloudflare Flexible kontra wymuszony HTTPS, dwie reguły www, wtyczka kontra .htaccess - i zostaw tylko jeden. Łańcuch przekierowań z curl/httpstatus.io pokaże pętlę czarno na białym, a po naprawie pamiętaj o czyszczeniu cache na każdej warstwie.