Logowanie do WordPressa nie działa – pętla przekierowań i „Zbyt wiele przekierowań”
Dane logowania są dobre, a WordPress ciągle odsyła do logowania albo przeglądarka pokazuje „Zbyt wiele przekierowań”? Jak znaleźć przyczynę: ciasteczka, adresy, proxy albo wtyczka.
W skrócie: jeśli po zalogowaniu ciągle wracają Państwo na stronę logowania albo przeglądarka pokazuje błąd „Zbyt wiele przekierowań” (ERR_TOO_MANY_REDIRECTS), prawie zawsze nie zgadzają się adresy: http i https, z www i bez. Inne przyczyny to stare ciasteczka, wtyczka cache, wtyczka bezpieczeństwa albo proxy, np. Cloudflare. Najpierw proszę usunąć ciasteczka, potem sprawdzić siteurl i home, a w razie potrzeby wyłączyć wtyczki przez FTP.
Login i hasło są poprawne, WordPress nie zgłasza błędu, a mimo to po kliknięciu „Zaloguj się” znów widać pusty formularz logowania. Albo przeglądarka całkiem się poddaje, bo strona przekierowuje w kółko. Oba przypadki są irytujące, ale rzadko groźne: treści są w porządku, tylko logowanie nie przechodzi.
Dlaczego WordPress odsyła z powrotem
Po zalogowaniu WordPress zapisuje w przeglądarce ciasteczko. Przy każdym kolejnym wejściu je sprawdza. Jeśli go nie znajdzie albo nie pasuje ono do aktualnie otwieranego adresu, odsyła z powrotem do logowania. Ciasteczka obowiązują jednak tylko dla konkretnego adresu. Ciasteczko dla https://www.twoja-domena.de nie działa automatycznie dla http://twoja-domena.de. Właśnie stąd bierze się pętla.
Krok 1: usunąć ciasteczka i cache
Proszę usunąć w przeglądarce ciasteczka dla swojej domeny albo spróbować w oknie prywatnym. Jeśli tam logowanie działa, winna była tylko przeglądarka. To najprostszy przypadek i zaskakująco częsty, szczególnie po przeprowadzce strony albo przejściu na HTTPS.
Krok 2: sprawdzić adresy
WordPress zapisuje swój adres dwa razy: jako „Adres WordPressa” (siteurl) i „Adres witryny” (home). Oba muszą dokładnie odpowiadać adresowi, pod którym działa strona, łącznie z https i www.
Do panelu właśnie nie da się wejść. Wartości można jednak wymusić w wp-config.php. Proszę dodać nad linią „That's all, stop editing!”:
define( 'WP_HOME', 'https://www.twoja-domena.de' );
define( 'WP_SITEURL', 'https://www.twoja-domena.de' );
Bez ukośnika na końcu. Można też zmienić wartości w phpMyAdmin w tabeli wp_options przy siteurl i home. Warto sprawdzić również, czy w .htaccess albo u hostingodawcy nie ma przekierowania w przeciwną stronę, np. z www na adres bez www, podczas gdy WordPress jest ustawiony na www. Wtedy serwer i WordPress przekierowują się nawzajem w kółko.
Krok 3: HTTPS za proxy
Jeśli strona działa za Cloudflare, load balancerem albo innym proxy, zapytanie czasem dociera do serwera jako http, choć odwiedzający używa https. WordPress uznaje wtedy połączenie za niezabezpieczone i przekierowuje na https, proxy znów przekazuje http i tak dalej. Pomaga wtedy wpis w wp-config.php, także nad „That's all”:
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
W Cloudflare ustawienie SSL powinno być „Full” albo „Full (strict)”, a nie „Flexible”. „Flexible” to jedna z najczęstszych przyczyn pętli przekierowań.
Krok 4: wyłączyć wtyczki
Jeśli nic z tego nie pomaga, zwykle zamieszana jest wtyczka. Typowi kandydaci:
- Wtyczki bezpieczeństwa, które ukrywają adres logowania, blokują logowanie po nieudanych próbach albo wymuszają logowanie dwuskładnikowe.
- Wtyczki cache, które przez pomyłkę zapamiętują stronę logowania albo panel.
- Wtyczki przekierowań i SSL, które przekierowują dodatkowo, oprócz serwera i WordPressa.
Proszę przez FTP zmienić nazwę folderu wp-content/plugins na plugins_off i spróbować zalogować się ponownie. Jeśli się uda, proszę raz otworzyć w panelu stronę „Wtyczki”. WordPress wyłączy wtedy wszystkie wtyczki, których folderu nie znajduje. Dopiero potem trzeba przywrócić nazwę folderu i włączać wtyczki po kolei, aż błąd wróci. Przy wtyczkach bezpieczeństwa często wystarczy zmienić nazwę tylko ich folderu.
Gdy nie działa samo hasło
Jeśli „Nie pamiętasz hasła?” nie działa, bo mail nie dochodzi, hasło można ustawić w phpMyAdmin. W tabeli wp_users przy użytkowniku trzeba wpisać nowe hasło w polu user_pass i wybrać funkcję MD5. WordPress przyjmie je przy następnym logowaniu i zastąpi bezpiecznym hashem. Zaraz potem proszę ustawić w profilu nowe, silne hasło. To, że mail z hasłem nie dochodzi, jest osobnym problemem do rozwiązania. Więcej w artykule Formularz kontaktowy nie wysyła maili.
Uwaga na nieznanych użytkowników
Jeśli w wp_users widać administratora, którego Państwo nie znają, albo hasło zostało zmienione bez Państwa udziału, to nie jest problem z logowaniem, tylko sygnał włamania. Wtedy najpierw proszę przeczytać Zhakowany WordPress? Jak to rozpoznać.
Profesjonalna pomoc
Ustalam, gdzie powstaje przekierowanie, uzgadniam adresy, HTTPS, proxy i wtyczki, a potem sprawdzam, czy logowanie, panel i strona działają poprawnie. Naprawa WordPress zaczyna się od 290 € netto. Jeśli błąd pojawił się po zmianie hostingu, właściwą usługą jest przeniesienie strony.