Loop di reindirizzamento https in wp-admin di WordPress
Sto utilizzando nginx come webserver e ho modificato il file di configurazione per puntare a https, quindi ho cambiato le impostazioni dell'URL di WordPress in https e ho anche aggiunto il codice WordPress force ssl admin al mio file wp-config, ma continuo a ricevere l'errore "Questa pagina web ha un loop di reindirizzamento"
Hai aggiunto $_SERVER['HTTPS'] = 'on';
al tuo wp-config.php?
Dovresti anche utilizzare il plugin WP Migrate DB per migrare da http://tuosito.com
a https://tuosito.com

Per qualche motivo, questo passaggio cruciale spesso non viene incluso.

Grazie! Probabilmente mi hai risparmiato altre ore di tentativi per capire perché l'area di amministrazione non funzionava con SSL.

è fantastico, l'unico problema è - come installi il plugin se il sito web non funziona :) So che dovresti sempre fare un backup prima di fare cose del genere, ma comunque. La soluzione qui sotto ha funzionato per me :)

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

l'istruzione if
nella documentazione non ha funzionato per me, quindi sto sempre impostando $_SERVER['HTTPS'] = 'on';

Dopo aver aggiunto $_SERVER['HTTPS']='on';
a wp-config.php, ottengo il messaggio Spiacenti, non sei autorizzato ad accedere a questa pagina.
sulla pagina /wp-admin
nonostante abbia effettuato l'accesso come amministratore. Utilizzo Cloudflare flexible SSL, quindi il traffico HTTPS viene inviato alla porta HTTP.

Dobbiamo aggiungere if strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
prima di require_once(ABSPATH . 'wp-settings.php');
come indicato qui: https://wordpress.stackexchange.com/questions/250240/setting-serverhttps-on-prevents-access-to-wp-admin#comment414886_250254 https://wordpress.stackexchange.com/questions/262194/cannot-login-to-wordpress-admin-with-ssl-terminated-load-balancer/263461#263461

Mi dispiace aggiungere un altro commento su $_SERVER['HTTPS'] = 'on'; che mi ha salvato, ma effettivamente ha risolto anche per me tutti i problemi di reindirizzamento. Ho provato ogni modifica possibile a nginx.conf e anche remove_filter('template_redirect', 'redirect_canonical'); che funzionava ma solo per la homepage. Il $_SERVER['HTTPS'] = 'on' ha sistemato tutto immediatamente. Grazie mille!!!!

Grazie per questo. Ha funzionato dopo 2 ore di tentativi con altre soluzioni.

+10000, mi stavo rompendo la testa senza capire perché l'SSL avesse rotto l'area di amministrazione e gli URL di inclusione delle pagine

Grazie mille! Ore di ricerca finalmente mi hanno portato nel posto giusto.

GRAZIE!! Questo è essenziale per Cloudflare e dovrebbe far parte del tutorial.

Sei un genio! Grazie infinite. Ho passato tantissime ore a cercare di capirlo. Mi hai tirato fuori da un loop infinito. Grazie!!

Ho avuto un problema simile e ho semplicemente aggiunto il seguente snippet al mio file wp-config.php
:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// in alcune configurazioni HTTP_X_FORWARDED_PROTO potrebbe contenere
// una lista separata da virgole, es. http,https
// quindi verifica la presenza di https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
come suggerito nel Codex. Questo sarà necessario solo nel caso in cui sia abilitato il pass-through SSL nel setup del tuo load balancer (o firewall). Significa che mentre puoi accedere al sito via HTTP all'interno di TLS/SSL, la comunicazione che riceve il tuo server è solo HTTP. Per gestire questo caso, è necessario l'header sopra riportato in modo che WordPress possa "impostare" HTTPS a on
nell'array di configurazione $_SERVER
.

Questa è un'ottima soluzione specificamente per chi utilizza un load balancer. Stavo ospitando questo sito usando Dokku (un clone fai-da-te di Heroku) e avevo problemi con il caricamento delle risorse statiche e il loop di reindirizzamento di wp-admin. Dokku utilizza anche un reverse proxy nginx per inoltrare il traffico in entrata dalla porta 443 alla porta 80 e questa soluzione risolve il problema.

Ho dovuto semplicemente inserire il codice $_SERVER['HTTPS'] = 'on';
perché HTTP_X_FORWARDED_PROTO non era nemmeno presente nelle impostazioni del server del mio cliente :|

Ha risolto perfettamente il mio problema quando utilizzavo un load balancer AWS.

Questo ha anche risolto il problema "Troppi reindirizzamenti" poiché il mio sito è dietro un load balancer su AWS.

Penso sia importante aggiungere a questa risposta la correzione per il file .htaccess in questi casi: https://stackoverflow.com/questions/36748110/htaccess-too-many-redirects-when-trying-to-force-https, controlla la risposta di @harshal-lonare.

Poiché non ho ancora il privilegio di commentare, pubblicherò questa aggiunta come un'altra risposta:
La soluzione proposta da Elias, aggiungendo quanto segue al file wp-config.php
, ha funzionato per me:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// in alcune configurazioni HTTP_X_FORWARDED_PROTO potrebbe contenere
// una lista separata da virgole, es. http,https
// quindi verifica la presenza di https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
Tuttavia, ha funzionato solo quando ho posizionato il codice prima di qualsiasi altra cosa in questo file!

Era esattamente il mio problema. Avevo inserito queste righe alla fine del file e non funzionava. Ero pronto a ricostruire il sito da zero. Spostandole in cima, bum, problema risolto. Grazie, grazie!!

Questa soluzione è perfetta se stai usando un SSL flessibile dietro un DNS proxy come Cloudflare. Grazie.

Confermo che funziona. Grazie mille, questo risolve molti problemi che avevamo con API e IFrame. Il sito non ha HTTPS abilitato, ma abbiamo bisogno che alcune pagine lo abbiano. WordPress dovrebbe avere questa opzione come impostazione predefinita...

Per tua informazione - quel codice può essere posizionato ovunque ma deve essere prima di require_once( ABSPATH . 'wp-settings.php' );
che si trova alla fine del file.

Un'altra versione da aggiungere agli appunti, basta inserire questo all'inizio del file wp-config.php
Il motivo è che potrebbero esserci bilanciatori di carico o altri elementi che non passano correttamente il valore HTTPS, quindi devi recuperarlo da un'altra parte e "simularlo" 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';
}

Ho appena utilizzato questa soluzione per un'installazione di WordPress 5.5.1 in esecuzione dietro un HAProxy su un firewall pfsense. Le altre soluzioni elencate non sembravano funzionare correttamente, almeno senza alcune modifiche a HAProxy e all'header che invia.

Domanda di 5 anni fa...
Okay, ho avuto questo errore, dopo aver installato il mio Certificato SSL e aver cambiato tutti i link da http
a https
usando wp-cli.phar trovato qui.
Ho provato varie configurazioni e nessuna sembrava risolvere il problema, a meno che non impostassi questo:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
a questo:
define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);
Mi permetteva di accedere alla pagina di login, ma poi non riuscivo effettivamente a loggarmi. Ho provato la risposta numero due ma purtroppo non ha aiutato, fino a quando non ho fatto la seguente modifica:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// in alcune configurazioni HTTP_X_FORWARDED_PROTO potrebbe contenere
// una lista separata da virgole es. http,https
// quindi verifica la presenza di https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)
$_SERVER['HTTPS']='on';
Per qualche motivo, non so perché - ho dovuto cambiare il
!== false
in
!== true
Sto eseguendo nginx come host e reverse proxy su nginx unit... Se qualcuno ha idea del perché abbia funzionato, per favore fatemelo sapere

In realtà... ho avuto questo problema e la soluzione è stata piuttosto semplice e imbarazzante. Per qualche motivo sul web host la mia cartella wp-admin era stata eliminata e quindi non c'era wp-admin con lo stesso messaggio di errore.
Dopo ore di test in tanti modi diversi, ho semplicemente notato questo e quando l'ho scaricata e ricaricata di nuovo tutto ha funzionato normalmente.
Controllate ragazzi, può essere così semplice.

Ho avuto lo stesso problema quando ho ospitato il mio sito su Azure webapp service Linux.
Prova questo plugin. Fai attenzione quando è attivo perché funziona. https://wordpress.org/plugins/jsm-force-ssl/
Questo plugin utilizza i filtri nativi di WordPress, anziché il buffer di output PHP, per massima affidabilità, prestazioni e compatibilità con la cache (questo plugin non influisce sulle prestazioni della cache), insieme a reindirizzamenti 301 permanenti per il miglior SEO (i reindirizzamenti 301 sono considerati i migliori per il SEO quando si passa da HTTP a HTTPS).
Rispetta le variabili di proxy / bilanciamento del carico per ambienti di hosting di grandi dimensioni:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Requisiti:
Il tuo server web deve essere configurato con un certificato SSL e in grado di gestire richieste HTTPS.
Basta attivare il plugin e il gioco è fatto:
Non ci sono impostazioni del plugin da regolare e non vengono apportate modifiche alla tua configurazione WordPress — basta attivare o disattivare il plugin per abilitare / disabilitare i filtri e i reindirizzamenti dinamici.

Anche io ho riscontrato lo stesso problema e dopo ore di ricerca e modifiche sono riuscito a farlo funzionare. Condivido tutto ciò che ho fatto perché non sono sicuro se siano tutti correlati.
Innanzitutto, il mio sito WordPress è ospitato su cPanel, quindi ho utilizzato lo strumento Softaculous in cPanel per aggiornare la versione di WordPress.
In secondo luogo, ho aggiornato il database di WordPress.
(Ho notato che il mio file .htaccess nella cartella principale del sito è stato aggiornato con l'aggiunta di RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
)
Poi ho controllato il file .htaccess della mia cartella wp-admin e ho visto questi comandi:
Order Allow,Deny
Deny from all
Sul sito di WordPress ho letto che questi comandi servono a prevenire l'accesso web ai file in quella cartella, ma non era un comportamento di cui avevo bisogno (credo)
Quindi li ho commentati e sono riuscito a caricare la sezione di amministrazione.

Grazie, ha funzionato per me. Mi hai migliorato la giornata
/** SSL */
define('FORCE_SSL_ADMIN', true);
// in alcune configurazioni HTTP_X_FORWARDED_PROTO potrebbe contenere
// una lista separata da virgole, es. http,https
// quindi verifica la presenza di https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

È solo la risposta di Elias ?
