WordPress wp-admin https boucle de redirection

61

J'utilise nginx comme serveur Web et j'ai modifié le fichier de configuration pour qu'il pointe vers https. Je modifie donc les paramètres de l'adresse URL de WordPress en https. J'ai également ajouté le code administrateur WordPress force ssl à mon fichier wp-config, mais je continue à rencontrer l'erreur. " Cette page Web a une boucle de redirection "

entrez la description de l'image ici

iamkingsleyf
la source

Réponses:

99

Vous avez ajouté $_SERVER['HTTPS'] = 'on';à votre wp-config.php ?

Vous devez également utiliser le WP DB Migrate plug - in pour migrer de http://yoursite.comlahttps://yoursite.com

Thaevok
la source
9
Je vous donnerais 1000 votes positifs pour cela!
Sheharyar
5
Pour une raison quelconque, cette étape vitale n’est souvent pas incluse.
Tania Rascia
4
Je vous remercie! Cela m'a probablement évité quelques heures supplémentaires d'essayer de comprendre pourquoi la zone d'administration ne fonctionnait pas avec SSL.
Sledge Hammer
4
Hou la la! $ _SERVER ['HTTPS'] = 'on'; m'a sauvé!
PJunior
2
Pourquoi ça marche? J'ai déjà utilisé l'outil S & R d'Interconnect. Je devrais déjà avoir le bon protocole dans la base de données.
Jeff
52

J'ai eu un problème similaire et je viens d'ajouter l'extrait suivant à mon 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';

comme suggéré dans le Codex . Cela ne sera nécessaire que si le relais SSL est activé dans la configuration de votre équilibreur de charge (ou pare-feu). Cela signifie que même si vous pouvez accéder au site via HTTP dans TLS / SSL, la communication que votre serveur reçoit est HTTP uniquement. Pour en tenir compte, l’en-tête ci-dessus est nécessaire pour que WordPress puisse "définir" HTTPS sur ondans le $_SERVERtableau de configuration.

Elias
la source
2
C'est une excellente solution spécifiquement pour quiconque utilise un équilibreur de charge. J'accueillais cela avec Dokku (un clone de Heroku à votre compte) et rencontrais des problèmes de chargement de ressources statiques et de la boucle de redirection wp-admin. Dokku utilise également un proxy inverse nginx pour transférer le trafic 443 entrant vers le port 80, ce qui corrige le problème.
ZachM
3
Je devais simplement mettre le $_SERVER['HTTPS'] = 'on';parce que HTTP_X_FORWARDED_PROTO n'est même pas dans les paramètres sur le serveur de mon client: |
Tom Roggero
1
Correction de mon problème parfaitement lors de l'utilisation d'un équilibreur de charge AWS.
Josh
Cela corrigeait également le problème "Trop de redirection", mon site se trouvant derrière un équilibreur de charge sur AWS.
voam
Je pense qu'il est important d'ajouter à cette réponse le correctif du fichier .htaccess pour de tels cas: stackoverflow.com/questions/36748110/… , consultez la réponse de @ harshal-lonare.
Gustavo Jantsch
11

Comme je n'ai pas encore le privilège de commentaire, je posterai cet ajout comme une autre réponse:

La solution proposée par Elias, à laquelle on ajoute ce qui suit wp-config.php, a fait l'affaire pour moi:

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

Cependant, cela ne fonctionnait que pour moi lorsque je le mettais avant tout le reste dans ce fichier!

Michael Jung
la source
1
C'était exactement ce que mon problème était. J'avais mis ceux-ci à la fin du fichier et cela ne fonctionnait pas. J'étais prêt à reconstruire mon site à partir de zéro. Les déplacé vers le haut et bam, problème résolu. Merci merci!!
Dean Poulin
Cette solution est idéale si vous utilisez un SSL flexible derrière un proxy DNS tel que Cloudflare. Je vous remercie.
Stefan P
Confirmé de travail. Merci beaucoup, cela résout beaucoup de problèmes que nous avions avec les API et les IFrames. HTTPS n'est pas activé sur le site, mais nous avons besoin de certaines pages pour l'activer. Wordpress devrait avoir ceci comme paramètre par défaut ...
Andy
FYI - ce code peut être n'importe où, mais il doit l'être avant require_once( ABSPATH . 'wp-settings.php' );la fin du fichier.
Damodar Bashyal le
7

Une autre version pour les livres, ajoutez-la simplement en haut de wp-config.php

La raison en est qu’il pourrait y avoir des équilibreurs de charge ou quelque chose qui ne transmet pas la valeur https appropriée. Vous devez donc le récupérer ailleurs et le simuler pour 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
la source
0

En fait ... J'avais ce problème et la résolution était assez facile et gênante. D'une manière ou d'une autre sur l'hébergeur, mon dossier wp-admin a été supprimé et donc aucun wp-admin avec ce même message d'erreur.

Après des heures de test, j'ai vu cela de tant de façons différentes et, une fois téléchargé et téléchargé à nouveau, tout a fonctionné normalement.

Vérifiez les gars, cela peut être aussi simple que cela.

Emcolsson
la source
0

Question de 5 ans ...

D'accord, j'ai eu cette erreur après l'installation de mon certificat SSL et la modification de tous les liens permettant httpd' httpsutiliser le fichier wp-cli.phar trouvé ici .

J'ai essayé diverses configurations et aucune ne semblait résoudre ce problème, à moins de définir ceci:

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

pour ça:

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

Cela m'a permis d'accéder à la page de connexion, mais n'a pas pu ensuite me connecter. J'ai essayé de répondre à la deuxième question, mais cela n'a malheureusement pas aidé non plus, jusqu'à ce que je fasse le changement suivant:

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

Pour une raison quelconque, je ne sais pas pourquoi - je devais changer le

! == faux

à

! == true

J'utilise nginx en tant qu'hôte et proxy inverse pour l'unité nginx ... Si quelqu'un a une idée du pourquoi cela a fonctionné, merci de me le faire savoir.

Ricky
la source