WordPress wp-admin https Umleitungsschleife

60

Ich verwende Nginx als Webserver und habe die Konfigurationsdatei so bearbeitet, dass sie auf https zeigt. Daher ändere ich die WordPress-URL-Einstellungen auf https und füge meiner WP-Konfigurationsdatei den WordPress-Force-SSL-Verwaltungscode hinzu, aber der Fehler tritt weiterhin auf " Diese Webseite hat eine Weiterleitungsschleife "

Bildbeschreibung hier eingeben

iamkingsleyf
quelle

Antworten:

98

Sie haben hinzugefügt , $_SERVER['HTTPS'] = 'on';um Ihre wp-config.php ?

Sie sollten auch das WP Migrate DB- Plugin verwenden, um von http://yoursite.comnach zu migrierenhttps://yoursite.com

thaevok
quelle
9
Ich würde dir 1000 Upvotes dafür geben!
Sheharyar
5
Aus irgendeinem Grund ist dieser entscheidende Schritt so oft nicht enthalten.
Tania Rascia
4
Danke! Das ersparte mir wahrscheinlich ein paar Stunden mehr, um herauszufinden, warum der Admin-Bereich nicht mit SSL funktioniert.
Sledge Hammer
4
Beeindruckend! $ _SERVER ['HTTPS'] = 'on'; rettete mich!
PJunior
2
Warum funktioniert das? Ich habe bereits das S & R-Tool von Interconnect verwendet. Ich sollte schon das richtige Protokoll in der Datenbank haben.
Jeff
51

Ich hatte ein ähnliches Problem und fügte gerade den folgenden Ausschnitt meinem hinzu 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';

wie im Kodex vorgeschlagen . Dies wird nur benötigt, wenn SSL-Passthrough in Ihrem Load Balancer- (oder Firewall-) Setup aktiviert ist. Das heißt, Sie können zwar über HTTP in TLS / SSL auf die Site zugreifen, die Kommunikation, die Ihr Server empfängt, erfolgt jedoch nur über HTTP. Um dies zu berücksichtigen, wird der obige Header benötigt, damit WordPress HTTPS onim $_SERVERKonfigurationsarray "setzen" kann .

Elias
quelle
2
Dies ist eine großartige Lösung speziell für Benutzer eines Load Balancers. Ich habe dies mit Dokku (einem Host-it-yourself-Klon von Heroku) gehostet und hatte Probleme mit dem Laden statischer Ressourcen und der wp-admin-Umleitungsschleife. Dokku führt auch einen Nginx-Reverse-Proxy durch, um eingehenden 443-Datenverkehr an Port 80 weiterzuleiten, und dies behebt das Problem.
ZachM
3
Ich musste nur das setzen, $_SERVER['HTTPS'] = 'on';weil HTTP_X_FORWARDED_PROTO nicht mal in den Einstellungen auf dem Server meines Clients ist: |
Tom Roggero
1
Mein Problem wurde perfekt behoben, wenn ein AWS-Load-Balancer verwendet wurde.
Josh
Dadurch wurde auch das Problem "Zu viele Weiterleitungen" behoben, da sich meine Site hinter einem Lastenausgleich in AWS befindet.
Voam
Ich denke, es ist wichtig, dieser Antwort das Update für die .htaccess-Datei für solche Fälle hinzuzufügen : stackoverflow.com/questions/36748110/… , check @ harshal-lonare answer.
Gustavo Jantsch
11

Da ich das Kommentarberechtigung noch nicht habe, werde ich diesen Zusatz als eine andere Antwort posten:

Die von Elias vorgeschlagene Lösung, um das Folgende hinzuzufügen wp-config.php, hat den Trick für mich getan:

/** 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';

Es hat jedoch nur bei mir funktioniert, wenn ich es vor allem anderen in dieser Datei abgelegt habe!

Michael Jung
quelle
1
Genau das war mein Problem. Ich hatte diese am Ende der Datei abgelegt und es funktionierte nicht. Ich war bereit, meine Website von Grund auf neu zu erstellen. Verschob sie an die Spitze und bam, Problem behoben. Danke Danke!!
Dean Poulin
Diese Lösung eignet sich hervorragend, wenn Sie ein flexibles SSL hinter einem Proxy-DNS wie Cloudflare verwenden. Danke.
Stefan P
Bestätigte Arbeit. Vielen Dank, dies behebt viele Probleme, die wir mit APIs und IFrames hatten. Auf der Site ist HTTPS nicht aktiviert, aber wir benötigen einige Seiten, um es zu aktivieren. Wordpress sollte dies als Standardeinstellung haben ...
Andy
Zu Ihrer Information - dieser Code kann überall sein, muss aber vor require_once( ABSPATH . 'wp-settings.php' );dem Ende der Datei stehen.
Damodar Bashyal
7

Eine andere Version für die Bücher, fügen Sie diese einfach oben in die Datei wp-config.php ein

Der Grund dafür ist, dass es Load Balancer geben kann oder etwas, das nicht den richtigen https-Wert übergibt. Sie müssen es also von einer anderen Stelle holen und es für WordPress vortäuschen.

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
quelle
0

Eigentlich ... ich hatte dieses Problem und das Lösen war ziemlich einfach und peinlich. Irgendwie wurde auf dem Webhost mein wp-admin Ordner gelöscht und daher kein wp-admin mit der gleichen Fehlermeldung.

Nach stundenlangen Tests auf so viele verschiedene Arten habe ich das gesehen und beim Herunterladen und Hochladen hat alles wie gewohnt funktioniert.

Check it guys, so einfach kann das sein.

emcolsson
quelle
0

5 Jahre alte Frage ...

Okay, ich hatte diesen Fehler, nachdem ich mein SSL-Zertifikat installiert und alle Links geändert hatte , die httpzur httpsVerwendung der hier gefundenen wp-cli.phar führten .

Ich habe verschiedene Konfigurationen ausprobiert und keine schien dies zu beheben, es sei denn, ich habe dies eingestellt:

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

dazu:

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

Ich konnte die Anmeldeseite aufrufen, konnte mich dann aber nicht anmelden. Ich habe versucht, Antwort zwei zu beantworten, aber das hat leider auch nicht geholfen, bis ich die folgende Änderung vorgenommen habe:

/** 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';

Aus irgendeinem Grund weiß ich nicht warum - ich musste das ändern

! == false

zu

! == wahr

Ich verwende Nginx als Host und Reverse Proxy für Nginx Unit ... Wenn jemand eine Ahnung hat, warum das funktioniert hat, lassen Sie es mich bitte wissen

Ricky
quelle