WordPress wp-admin Pętla przekierowania https


60

Używam nginx jako mojego serwera i zmodyfikowałem plik konfiguracyjny, aby wskazywał na https, więc zmieniłem ustawienia adresu URL WordPress na https, a także dodałem kod administratora siły ssl WordPress do mojego pliku wp-config, ale ciągle napotyka błąd „ Ta strona ma pętlę przekierowań ”

wprowadź opis zdjęcia tutaj

Odpowiedzi:


98

Już dodany $_SERVER['HTTPS'] = 'on';do wp-config.php ?

Warto również skorzystać z WP Migrate DB wtyczki do migracji z http://yoursite.comdohttps://yoursite.com


9
Dałbym ci za to 1000 głosów poparcia!
— Sheharyar

5
Z jakiegoś powodu ten ważny krok tak często nie jest uwzględniany.
— Tania Rascia

4
Dziękuję Ci! To prawdopodobnie zaoszczędziło mi jeszcze kilka godzin, próbując dowiedzieć się, dlaczego obszar administracyjny nie działa z SSL.
— Młot

4
łał! $ _SERVER ['HTTPS'] = 'on'; uratował mnie!
— PJunior

2
Dlaczego to działa? Użyłem już narzędzia S&R firmy Interconnect. Powinienem już mieć odpowiedni protokół w bazie danych.
— Jeff

51

Miałem podobny problem i właśnie dodałem następujący fragment kodu do mojego wp-config.php:

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

jak zasugerowano w Kodeksie . Będzie to potrzebne tylko w przypadku, gdy w konfiguracji modułu równoważenia obciążenia (lub zapory ogniowej) jest włączone przekazywanie SSL. Oznacza to, że o ile można uzyskać dostęp do witryny za pośrednictwem protokołu HTTP w ramach TLS / SSL, komunikacja, którą otrzymuje serwer, odbywa się wyłącznie za pośrednictwem protokołu HTTP. Aby to uwzględnić, potrzebny jest powyższy nagłówek, aby WordPress mógł „ustawić” HTTPS na onw $_SERVERtablicy konfiguracji.


2
To świetne rozwiązanie specjalnie dla każdego, kto używa modułu równoważenia obciążenia. Hostowałem to za pomocą Dokku (klon Heroku host-it-yourself) i miałem problemy ze statycznym ładowaniem zasobów i pętlą przekierowania wp-admin. Dokku wykonuje również odwrotne proxy nginx w celu przekazywania przychodzącego ruchu 443 do portu 80, co rozwiązuje problem.
— ZachM

3
Musiałem po prostu wstawić, $_SERVER['HTTPS'] = 'on';ponieważ HTTP_X_FORWARDED_PROTO nie ma nawet w ustawieniach na serwerze mojego klienta: |
— Tom Roggero

1
Naprawiono mój problem idealnie podczas korzystania z modułu równoważenia obciążenia AWS.
— Josh

To również rozwiązało problem „Zbyt wielu przekierowań”, ponieważ moja witryna stoi za modułem równoważenia obciążenia w AWS.
— voam

Myślę, że ważne jest dodanie do tej odpowiedzi poprawki dla pliku .htaccess w takich przypadkach: stackoverflow.com/questions/36748110/... , sprawdź @ harshal-lonare odpowiedź.
— Gustavo Jantsch,

11

Ponieważ nie mam jeszcze uprawnienia do komentowania, opublikuję ten dodatek jako kolejną odpowiedź:

Rozwiązanie zaproponowane przez Eliasa, aby dodać do tego wp-config.php, zrobiło dla mnie lewę:

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

Jednak zadziałało to tylko wtedy, gdy umieściłem go przed wszystkim innym w tym pliku!


1
To był dokładnie mój problem. Umieściłem je na końcu pliku i nie działało. Byłem gotowy, aby odbudować moją witrynę od zera. Przeniesiono je na górę i bam, problem naprawiony. Dziękuję dziękuję!!
— Dean Poulin,

To rozwiązanie jest świetne, jeśli używasz elastycznego protokołu SSL za serwerem proxy DNS, takim jak Cloudflare. Dziękuję Ci.
— Stefan P.

Potwierdzona praca. Dziękuję bardzo, to naprawia wiele problemów, które mieliśmy z API i IFrame. Witryna nie ma włączonej HTTPS, ale potrzebujemy kilku stron, aby ją włączyć. Wordpress powinien mieć to domyślnie jako ustawienie ...
— Andy,

FYI - ten kod może być w dowolnym miejscu, ale musi być wcześniej, require_once( ABSPATH . 'wp-settings.php' );który znajduje się na końcu pliku.
— Damodar Bashyal

7

Kolejna wersja książek, po prostu dodaj ją na początek wp-config.php

Powodem jest to, że mogą istnieć moduły równoważące obciążenie lub coś, co nie przekazuje właściwej wartości https, więc musisz pobrać ją z innego miejsca i sfałszować dla wordpress.

if ( (isset($_SERVER['HTTP_X_FORWARDED_PORT'] ) && ( '443' == $_SERVER['HTTP_X_FORWARDED_PORT'] ))
    || (isset($_SERVER['HTTP_CF_VISITOR']) && $_SERVER['HTTP_CF_VISITOR'] == '{"scheme":"https"}')) {
    $_SERVER['HTTPS'] = 'on';
}

0

Właściwie ... miałem ten problem i rozwiązanie było dość łatwe i krępujące. Jakoś na webhostie mój folder wp-admin został usunięty i dlatego nie ma wp-admin z tym samym komunikatem o błędzie.

Po godzinach testowania na tak wiele różnych sposobów właśnie to zobaczyłem, a po ponownym pobraniu i przesłaniu wszystko działało normalnie.

Sprawdźcie, to może być takie proste.


0

5-letnie pytanie ...

Ok, miałem ten błąd, po zainstalowaniu mój certyfikat SSL i zmienia wszystkie linki, które były httpdo httpskorzystania z wp-cli.phar znaleźć tutaj .

Próbowałem różnych konfiguracji i chyba żadna nie rozwiązała tego problemu, chyba że ustawię to:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true);

do tego:

define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);

Pozwoliło mi to wejść na stronę logowania, ale wtedy nie mogłem się zalogować. Próbowałem odpowiedzieć na dwa, ale to niestety nie pomogło, dopóki nie zrobiłem następującej zmiany:

/** SSL */   
define('FORCE_SSL_ADMIN', true);
// in some setups HTTP_X_FORWARDED_PROTO might contain
// a comma-separated list e.g. http,https   
// so check for https existence   
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)  
     $_SERVER['HTTPS']='on';

Z jakiegoś powodu nie wiem dlaczego - musiałem zmienić

! == false

do

! == prawda

Używam nginx jako hosta i odwrotnego proxy do jednostki nginx ... Jeśli ktoś ma pojęcie, dlaczego to zadziałało, daj mi znać

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.