Awarie

ERR_TOO_MANY_REDIRECTS — pętla przekierowań na WordPressie

Przeglądarka poddaje się po kilkunastu próbach i mówi, że strona przekierowuje za dużo razy. Zwykle winne są dwa ustawienia, które się kłócą.

Komunikat ERR_TOO_MANY_REDIRECTS w przeglądarce Chrome

Strona twojadomena.pl przekierowała zbyt wiele razy” i pod tym ERR_TOO_MANY_REDIRECTS. W Firefoksie: „Strona nie przekierowuje prawidłowo”.

Co się tu dzieje: adres A odsyła do B, B odsyła z powrotem do A, i tak w kółko. Przeglądarka liczy skoki i po kilkunastu przerywa, żeby nie kręcić się w nieskończoność.

Kluczowa obserwacja jest taka, że prawie nigdy nie chodzi o jedno błędne przekierowanie. Chodzi o dwa ustawienia, z których każde osobno jest poprawne, ale razem tworzą zamknięte koło.

Najczęstszy scenariusz: dwa razy to samo HTTPS

Zainstalowałeś certyfikat SSL. Włączyłeś wtyczkę wymuszającą HTTPS. Hosting też ma przełącznik „wymuszaj HTTPS” i on również jest włączony. Do tego ktoś kiedyś dopisał regułę w .htaccess.

Każdy z tych mechanizmów mówi „przekieruj na HTTPS”. Jeśli jeden z nich widzi połączenie jako nieszyfrowane (bo za proxy dostaje je po HTTP), przekierowuje. Drugi robi to samo. Koło się zamyka.

Naprawa polega na tym, żeby wymuszać HTTPS tylko w jednym miejscu. Nie w trzech. Wybierz przełącznik w panelu hostingu albo regułę w .htaccess, albo wtyczkę — jedno z nich, a pozostałe wyłącz.

Sprawdź adresy w ustawieniach

Druga klasyczna przyczyna. W bazie danych adres strony jest zapisany inaczej niż ten, którym faktycznie wchodzisz.

Typowe rozbieżności: adres z www, a wchodzisz bez www. Albo w bazie zostało http, choć strona działa na https. Albo po migracji siedzi tam jeszcze stara domena.

Nie zalogujesz się, żeby to poprawić w panelu — bo panel też jest w pętli. Zrób to w wp-config.php, dopisując nad linią z require_once:

define( 'WP_HOME', 'https://twojadomena.pl' );
define( 'WP_SITEURL', 'https://twojadomena.pl' );

Wpisz dokładnie ten wariant, którego używasz: z https, z www albo bez, bez ukośnika na końcu. Te linie mają wyższy priorytet niż zawartość bazy, więc pętla powinna się urwać od razu.

Wyczyść .htaccess

Jeśli powyższe nie pomogło, przez FTP zmień nazwę pliku .htaccess na .htaccess-old i odśwież stronę.

Jeżeli pętla ustała, w pliku była sprzeczna reguła. Wejdź w Ustawienia → Bezpośrednie odnośniki, kliknij „Zapisz zmiany”, a WordPress wygeneruje czystą wersję. Potem dopisuj swoje przekierowania pojedynczo, sprawdzając stronę po każdym.

Szukaj tam zwłaszcza reguł, które przekierowują na ten sam adres, na którym już jesteś — na przykład wymuszania www na stronie, która działa bez www, albo dwóch reguł HTTPS jedna pod drugą.

Gdy w grze jest Cloudflare

To bardzo częsty i mało oczywisty przypadek.

W Cloudflare tryb SSL ustawiony na Flexible oznacza, że Cloudflare łączy się z Twoim serwerem po HTTP, choć wobec odwiedzającego używa HTTPS. Twój serwer widzi połączenie nieszyfrowane i przekierowuje na HTTPS. Żądanie wraca do Cloudflare, które znów łączy się po HTTP. Idealna pętla.

Rozwiązanie: w Cloudflare w sekcji SSL/TLS ustaw tryb Full (strict), o ile masz na serwerze ważny certyfikat. Tryb Flexible to relikt czasów, gdy certyfikaty były płatne, i dziś prawie zawsze robi więcej szkody niż pożytku — bywa też powodem problemów z kłódką i mieszaną treścią.

Przy okazji sprawdź, czy nie masz w Cloudflare reguł Page Rules, które również przekierowują.

Wyczyść ciasteczka, zanim uznasz, że nie działa

Po każdej z powyższych zmian odśwież stronę w trybie prywatnym albo wyczyść ciasteczka dla swojej domeny.

Przeglądarki zapamiętują przekierowania stałe (301) bardzo agresywnie. Możesz naprawić serwer i nadal widzieć pętlę, bo Chrome wykonuje ją lokalnie, nawet nie pytając serwera. To źródło ogromnej liczby fałszywych alarmów typu „naprawiłem, a nadal nie działa”.

Wtyczki, które warto sprawdzić

Jeśli pętla pojawiła się po instalacji lub aktualizacji czegoś, najczęstsi kandydaci to:

  • wtyczki SSL wymuszające HTTPS,
  • wtyczki przekierowań z regułą, która odsyła do siebie samej,
  • wtyczki cache zapisujące przekierowanie i podające je z pamięci,
  • wtyczki wielojęzyczne przekierowujące według języka przeglądarki,
  • wtyczki bezpieczeństwa przenoszące adres strony logowania.

Bez dostępu do panelu wyłączasz je przez FTP: w wp-content/plugins zmień nazwę katalogu, dodając -off. Albo zmień nazwę całego katalogu plugins, żeby wyłączyć wszystkie naraz.

Uważaj na jeden szczególny przypadek

Jeśli pętla prowadzi przez obcą domenę — czyli w pasku adresu na moment pojawia się adres, którego nie znasz — to nie jest zwykły konflikt konfiguracji. To objaw przejęcia strony. Sprawdź wtedy, jak rozpoznać włamanie, zanim zaczniesz porządkować przekierowania.

Ile to zajmuje

Sprawdzenie adresów w wp-config.php i wyłączenie zdublowanego wymuszania HTTPS — kwadrans. Ustawienie Cloudflare — kilka minut. Rozplątywanie ręcznie dopisanych przekierowań, jeśli jest ich kilkanaście — do godziny.

Warto zlecić, gdy pętla dotyczy tylko części adresów (to trudniejszy wariant, bo trzeba śledzić kolejne skoki narzędziami serwerowymi) albo gdy stoi za tym rozbudowany zestaw przekierowań po zmianie struktury strony. Przy okazji przebudowy adresów łatwo stracić pozycje w Google, więc opłaca się zrobić to raz i porządnie — pisaliśmy o tym w tekście o pozycjonowaniu i wchodzeniu do TOP 10.


Strona kręci się w kółko? Rozplączemy to — diagnoza bezpłatna, odpowiedź w ciągu dwóch godzin. Sprawdzamy kolejne skoki przekierowań narzędziami serwerowymi, więc nie zgadujemy, które ustawienie się kłóci. Rozliczenie godzinowe od 120 zł netto, płatność po wykonaniu.

  • przekierowania
  • ssl
  • https
  • htaccess

Masz taką sytuację u siebie?

Diagnoza i wstępna wycena bezpłatne. Płacisz dopiero po wykonaniu — napisz albo zadzwoń, odpowiadamy do 2 godzin.