Ciclo di reindirizzamento https di WordPress wp-admin


61

Sto usando nginx come mio server web e ho modificato il file di configurazione in modo che faccia riferimento a https, quindi cambio le impostazioni dell'URL di WordPress in https e ho anche aggiunto il codice admin ssl force di WordPress al mio file wp-config ma continuo a correre nell'errore " Questa pagina web ha un ciclo di reindirizzamento "

inserisci qui la descrizione dell'immagine

Risposte:


99

Hai aggiunto $_SERVER['HTTPS'] = 'on';al tuo wp-config.php ?

Dovresti anche usare il plugin WP Migrate DB per migrare da http://yoursite.comahttps://yoursite.com


9
Ti darei 1000 voti per questo!
Sheharyar,

5
Per qualche ragione, questo passaggio vitale non è così spesso incluso.
Tania Rascia,

4
Grazie! Ciò mi ha probabilmente risparmiato qualche ora in più nel tentativo di capire perché l'area di amministrazione non funzionava con SSL.
Sledge Hammer,

4
Wow! $ _SERVER ['HTTPS'] = 'on'; mi ha salvato!
PJunior,

2
Perché funziona? Ho già usato lo strumento S&R di Interconnect. Dovrei già avere il protocollo giusto nel database.
Jeff,

52

Ho avuto un problema simile e ho appena aggiunto il seguente frammento al mio 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';

come suggerito nel Codice . Ciò sarà necessario solo nel caso in cui sia abilitato il passthrough SSL nella configurazione di bilanciamento del carico (o firewall). Ciò significa che mentre è possibile accedere al sito tramite HTTP in TLS / SSL, la comunicazione ricevuta dal server è solo HTTP. Per tenere conto di questo, intestazione sopra è necessaria per WordPress può "set" HTTPS onnella $_SERVERmatrice di configurazione.


2
Questa è un'ottima soluzione specificamente per chiunque usi un bilanciamento del carico. Lo stavo ospitando usando Dokku (un clone di Heroku da solo) e ho avuto problemi con il caricamento statico delle risorse e il ciclo di reindirizzamento di wp-admin. Dokku esegue anche un proxy inverso nginx per inoltrare il traffico 443 in entrata alla porta 80 e questo risolve il problema.
ZachM,

3
Ho dovuto inserire il solo $_SERVER['HTTPS'] = 'on';perché HTTP_X_FORWARDED_PROTO non è nemmeno nelle impostazioni sul server del mio client: |
Tom Roggero,

1
Risolto il problema perfettamente quando si utilizza un bilanciamento del carico AWS.
Josh,

Ciò ha anche risolto il "Troppo problema di reindirizzamento" poiché il mio sito è dietro un bilanciamento del carico su AWS.
Voam

Credo che sia importante aggiungere a questa risposta la correzione per il file .htaccess per tali casi: stackoverflow.com/questions/36748110/... , controllo @ risposta Harshal-lonare.
Gustavo Jantsch,

11

Poiché non ho ancora il privilegio di commento, posterò questa aggiunta come un'altra risposta:

La soluzione proposta da Elias, per aggiungere quanto segue wp-config.php, ha funzionato per me:

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

Tuttavia, ha funzionato solo per me quando l'ho messo prima di tutto il resto in questo file!


1
Questo era esattamente il mio problema. Li avevo inseriti alla fine del file e non funzionava. Ero pronto a ricostruire il mio sito da zero. Li ho spostati in alto e bam, problema risolto. Grazie grazie!!
Dean Poulin,

Questa soluzione è ottima se stai usando un SSL flessibile dietro un DNS proxy come Cloudflare. Grazie.
Stefan P,

Lavoro confermato. Grazie mille, questo risolve molti problemi che abbiamo avuto con API e IFrame. Il sito non ha HTTPS abilitato, ma abbiamo bisogno di alcune pagine per averlo attivo. Wordpress dovrebbe avere questa impostazione come impostazione predefinita ...
Andy,

Cordiali saluti - quel codice può essere ovunque ma deve essere prima di quello require_once( ABSPATH . 'wp-settings.php' );che è alla fine del file.
Damodar Bashyal,

7

Un'altra versione per i libri, basta aggiungerla all'inizio di wp-config.php

Il motivo è che potrebbero esserci bilanciatori del carico o qualcosa che non passa lungo il valore https corretto, quindi è necessario afferrarlo da altrove e falsificarlo per 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

In realtà ... ho avuto questo problema e la risoluzione è stata abbastanza facile e imbarazzante. In qualche modo sul webhost la mia cartella wp-admin è stata eliminata e quindi nessun wp-admin con questo stesso messaggio di errore.

Dopo ore di test in tanti modi diversi ho appena visto questo e quando scaricato e caricato di nuovo tutto ha funzionato normalmente.

Dai un'occhiata ragazzi, può essere così semplice.


0

Domanda di 5 anni ...

Va bene, ho avuto questo errore, dopo aver installato il Certificato SSL e la modifica di tutti i link che erano httpal httpsutilizzando il wp-cli.phar trovato qui .

Ho provato varie configurazioni e nessuna sembrava risolverlo, a meno che non lo imposti:

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

a questo:

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

Mi ha permesso di accedere alla pagina di accesso, ma non è stato in grado di accedere effettivamente. Ho provato a rispondere alla seconda, ma sfortunatamente non ha aiutato neanche, fino a quando non ho fatto la seguente modifica:

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

Per qualche motivo, non so perché - ho dovuto cambiare il

! == false

per

! == vero

Sto eseguendo nginx come host e proxy inverso all'unità nginx ... Se qualcuno ha idea del perché ha funzionato, per favore fatemi sapere

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.