Bucle de redireccionamiento https wp-admin de WordPress

60

Estoy usando nginx como mi servidor web y he editado el archivo de configuración para que apunte a https, así que cambio la configuración de URL de WordPress a https y también agregué el código de administración de WordPress force ssl a mi archivo wp-config pero sigo encontrando el error " Esta página web tiene un bucle de redireccionamiento "

ingrese la descripción de la imagen aquí

iamkingsleyf
fuente

Respuestas:

98

¿Has agregado $_SERVER['HTTPS'] = 'on';a tu wp-config.php ?

También debe usar el complemento WP Migrate DB para migrar de http://yoursite.comahttps://yoursite.com

thaevok
fuente
99
¡Te daría 1000 votos a favor por esto!
Sheharyar
55
Por alguna razón, este paso vital a menudo no se incluye.
Tania Rascia
44
¡Gracias! Eso probablemente me ahorró algunas horas más de tratar de descubrir por qué el área de administración no funcionaba con SSL.
Sledge Hammer
44
¡Guauu! $ _SERVER ['HTTPS'] = 'activado'; ¡me salvó!
PJunior
2
¿Por qué funciona esto? Ya usé la herramienta S&R de Interconnect. Ya debería tener el protocolo correcto en la base de datos.
Jeff
51

Tuve un problema similar y acabo de agregar el siguiente fragmento a mi 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';

como se sugiere en el Codex . Esto solo será necesario en caso de que haya habilitado el paso SSL en la configuración de su equilibrador de carga (o firewall). Lo que significa que si bien puede acceder al sitio a través de HTTP dentro de TLS / SSL, la comunicación que recibe su servidor es solo HTTP. Para dar cuenta de eso, se necesita el encabezado anterior para que WordPress pueda "configurar" HTTPS onen la $_SERVERmatriz de configuración.

Elias
fuente
2
Esta es una gran solución específicamente para cualquiera que use un equilibrador de carga. Estuve alojando esto usando Dokku (un clon host-it-yourself de Heroku) y tenía problemas con la carga de recursos estáticos y el bucle de redirección wp-admin. Dokku también hace un proxy inverso nginx para reenviar el tráfico 443 entrante al puerto 80 y esto soluciona el problema.
ZachM
3
Tuve que poner simplemente $_SERVER['HTTPS'] = 'on';porque HTTP_X_FORWARDED_PROTO ni siquiera está en la configuración del servidor de mi cliente: |
Tom Roggero el
1
Se solucionó mi problema perfectamente al usar un equilibrador de carga de AWS.
Josh
Esto también solucionó el problema "Demasiados redireccionamientos" ya que mi sitio está detrás de un equilibrador de carga en AWS.
voam
Creo que es importante agregar a esta respuesta la solución para el archivo .htaccess para tales casos: stackoverflow.com/questions/36748110/… , consulte la respuesta @ harshal-lonare.
Gustavo Jantsch
11

Como todavía no tengo el privilegio de comentario, publicaré esta adición como otra respuesta:

La solución propuesta por Elias, para agregar lo siguiente wp-config.php, me funcionó:

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

Sin embargo, ¡solo funcionó para mí cuando lo puse antes que todo lo demás en este archivo!

Michael Jung
fuente
1
Este fue exactamente mi problema. Los puse al final del archivo y no funcionaba. Estaba listo para reconstruir mi sitio desde cero. Los movió a la parte superior y bam, problema solucionado. ¡¡Gracias Gracias!!
Dean Poulin
Esta solución es excelente si está utilizando un SSL flexible detrás de un DNS proxy como Cloudflare. Gracias.
Stefan P
Trabajo confirmado Muchas gracias, esto soluciona muchos problemas que tuvimos con API e IFrames. El sitio no tiene HTTPS habilitado, pero necesitamos algunas páginas para tenerlo activado. Wordpress debería tener esto como una configuración predeterminada ...
Andy
FYI: ese código puede estar en cualquier lugar, pero debe estar antes de require_once( ABSPATH . 'wp-settings.php' );que esté al final del archivo.
Damodar Bashyal
7

Otra versión para los libros, simplemente agregue esto a la parte superior de wp-config.php

La razón es que podría haber equilibradores de carga o algo que no transmite el valor https adecuado, por lo que debe tomarlo de otro lado y fingirlo para 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
fuente
0

En realidad ... tuve este problema y la resolución fue bastante fácil y embarazosa. De alguna manera en el webhost, mi carpeta wp-admin fue eliminada y, por lo tanto, no wp-admin con este mismo mensaje de error.

Después de horas de probar tantas formas diferentes, acabo de ver esto y cuando lo descargué y volví a cargar, todo funcionó de manera normal.

Compruébalo chicos, puede ser así de simple.

emcolsson
fuente
0

Pregunta de 5 años ...

Está bien, tuve este error, después de instalar mi certificado SSL y cambiar todos los enlaces que estaban httpa httpsusar el wp-cli.phar encontrado aquí .

Intenté varias configuraciones y ninguna parecía resolver esto, a menos que establezca esto:

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

a esto:

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

Me permitió acceder a la página de inicio de sesión, pero luego no pude iniciar sesión realmente. Intenté responder dos, pero desafortunadamente tampoco ayudó, hasta que hice el siguiente cambio:

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

Por alguna razón, no sé por qué, tuve que cambiar el

! == falso

a

! == verdadero

Estoy ejecutando nginx como host y proxy inverso a la unidad nginx ... Si alguien tiene alguna idea de por qué funcionó, hágamelo saber

Ricky
fuente