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

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


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.


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!


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';
}

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.