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

iamkingsleyf
źródło

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

thaevok
źródło
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.

Elias
źródło
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!

Michael Jung
źródło
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';
}
Timo Huovinen
źródło
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.

emcolsson
źródło
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ć

Ricky
źródło