Kiedy jesteś offline po czystej instalacji WordPress’a


Uwaga! Wszystkie informacje i solucje zawarte w postach typu DYI mogą z czasem przestać być aktualne. Niektóre publikowane kody źródłowe, będąc zależnymi od używanych konfiguracji platform i sprzętu, mogą nie działać, lub działać nieprawidłowo u niektórych użytkowników. Stosując opisane rozwiązania przyjmujesz do wiadomości i zgadzasz się, że nie ponoszę odpowiedzialności za ich finalne efekty.


Może się zdarzyć tak, że przepinasz domenę na Cloudflare, instalujesz na serwerze WordPress’a i… okazuje się, że nie możesz utworzyć żadnego wpisu, bo strona twierdzi, że… jesteś offline!. Zaglądasz do ustawień serwisu, patrzysz – adres strony zaczyna się od 'HTTP’ zamiast 'HTTPS’. Więc korygujesz tę informację i… Tak, podobno jestem mistrzem suspensu 😀

Aż by się chciało, żeby tutaj pojawiło się coś a’la „zanim powiem Ci, co było dalej – zapraszam Cię do odwiedzenia witryny sponsora odcinka” 😀 Dobra, żarcik taki 😀

W każdym razie, po zmianie strona się przeładowuje i wyświetla komunikat o błędzie: „Ta strona nie działa. Strona nazwa.tld spowodowała zbyt wiele przekierowań„. Co ciekawe, żadnym sposobem nie można się dostać wyłącznie do panelu administracyjnego, strona frontowa i podstrony wyświetlają się bez problemu.

Analizujesz więc tak: „zainstalowałem WP, zmieniłem protokół z nieprawidłowego na prawidłowy i wtedy wystąpił problem„. Stwierdzasz więc, że coś może być nie tak z certyfikowanym routingiem.

Co robisz? Rozkminiasz.

Dlaczego wyświetlił się komunikat 'To many redirects”? Ano dlatego, że prawdopodobnie serwer nie został dobrze skonfigurowany (serwer nie jest mój, nie chciało mi się też niczego sprawdzać, ale domyślam się, że konfiguracja nie przekazuje wcale lub przekazuje niepoprawnie nagłówek HTTPS=on lub zmiennej HTTP_X_FORWARDED_PROTO) – próbował najpierw przepuścić ruch po protokole HTTPS, WordPress przez ustawienia wykrył brak protokołu i próbował wymusić jego użycie. Proces się powtarza, co powoduje wyświetlenie komunikatu o błędzie.

Jaki jest na to sposób? Wymusić w wp-config.php użycie HTTPS. Wystarczy dopisać w pliku:

define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
}

Po zmianie wszystko wraca do normy. Nieźle, nie?

Na zdrowie!