Bucle de redirección https en WordPress wp-admin
Estoy usando nginx como servidor web y he editado el archivo de configuración para apuntar a https, así que cambié la configuración de URL de WordPress a https y también agregué el código de forzado de ssl admin de WordPress a mi archivo wp-config, pero sigo encontrándome con el error "Esta página web tiene un bucle de redirección"
¿Has agregado $_SERVER['HTTPS'] = 'on';
a tu archivo wp-config.php?
También deberías usar el plugin WP Migrate DB para migrar de http://tusitio.com
a https://tusitio.com

¡Gracias! Probablemente me ahorraste unas cuantas horas más tratando de averiguar por qué el área de administración no funcionaba con SSL.

eso es genial, el único problema es: ¿cómo instalas el plugin si el sitio web no funciona? :) Sé que siempre debes hacer una copia de seguridad antes de hacer cosas como esta, pero aún así. La solución siguiente funcionó para mí :)

¿Por qué funciona esto? Ya usé la herramienta de búsqueda y reemplazo de Interconnect. Ya debería tener el protocolo correcto en la base de datos.

la declaración if
en la documentación no funcionó para mí, así que simplemente siempre establezco $_SERVER['HTTPS'] = 'on';

Después de agregar $_SERVER['HTTPS']='on';
a wp-config.php, recibo el mensaje Lo sentimos, no tienes permiso para acceder a esta página.
en la página /wp-admin
aunque inicié sesión como administrador. Uso Cloudflare flexible SSL por lo que el tráfico HTTPS se envía al puerto HTTP.

Tenemos que agregar if strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
antes de require_once(ABSPATH . 'wp-settings.php');
como se menciona aquí: 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

Lamento añadir otro comentario sobre cómo $_SERVER['HTTPS'] = 'on'; me salvó, pero efectivamente también solucionó todos mis problemas de redirección. Probé todos los cambios posibles en nginx.conf junto con remove_filter('template_redirect', 'redirect_canonical'); lo cual funcionó pero solo para la página de inicio. El $_SERVER['HTTPS'] = 'on' lo arregló todo inmediatamente. ¡¡¡Muchas gracias!!!!

Gracias por esto. Esto funcionó después de 2 horas probando otras soluciones.

+10000, me estaba rompiendo la cabeza preguntándome por qué el SSL rompió mi área de administración y las URLs de inclusión de páginas

¡Muchas gracias! Horas de búsqueda finalmente me llevan al lugar correcto.

¡¡GRACIAS!! Esto es esencial para Cloudflare y debería venir como parte del tutorial.

¡Eres un genio! Muchísimas gracias. Pasé tantas horas tratando de resolver esto. Me sacaste de un bucle sin fin. ¡Gracias!!

Tuve un problema similar y simplemente agregué el siguiente fragmento a mi archivo wp-config.php
:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// en algunas configuraciones HTTP_X_FORWARDED_PROTO podría contener
// una lista separada por comas, ej. http,https
// así que verificamos la existencia de https
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 SSL passthrough habilitado en la configuración de tu balanceador de carga (o firewall). Esto significa que aunque puedas acceder al sitio mediante HTTP dentro de TLS/SSL, la comunicación que recibe tu servidor es solo HTTP. Para tener esto en cuenta, se necesita el encabezado anterior para que WordPress pueda "establecer" HTTPS como on
en el arreglo de configuración $_SERVER
.

Esta es una excelente solución especialmente para cualquiera que use un balanceador de carga. Estaba alojando esto usando Dokku (un clon de Heroku que puedes hospedar tú mismo) y tenía problemas con la carga de recursos estáticos y el bucle de redirección de wp-admin. Dokku también utiliza un proxy inverso de nginx para redirigir el tráfico entrante del puerto 443 al puerto 80 y esto soluciona el problema.

Tuve que simplemente poner el $_SERVER['HTTPS'] = 'on';
porque HTTP_X_FORWARDED_PROTO ni siquiera está en la configuración del servidor de mi cliente :|

Solucionó mi problema perfectamente al usar un balanceador de carga de AWS.

Esto también solucionó el problema de "Demasiadas redirecciones" ya que mi sitio está detrás de un balanceador de carga en AWS.

Creo que es importante agregar a esta respuesta la solución para el archivo .htaccess en estos casos: https://stackoverflow.com/questions/36748110/htaccess-too-many-redirects-when-trying-to-force-https, revisa la respuesta de @harshal-lonare.

Como aún no tengo el privilegio de comentar, publicaré esta adición como otra respuesta:
La solución propuesta por Elias, de añadir lo siguiente al archivo wp-config.php
, funcionó para mí:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// en algunas configuraciones HTTP_X_FORWARDED_PROTO puede contener
// una lista separada por comas ej. http,https
// así que verifica la existencia de https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
Sin embargo, solo funcionó para mí cuando lo coloqué antes que cualquier otra cosa en este archivo!

Esto era exactamente mi problema. Había puesto estos al final del archivo y no funcionaba. Estaba listo para reconstruir mi sitio desde cero. Los moví al principio y ¡bam!, problema resuelto. ¡Gracias, gracias!

Esta solución es genial si estás usando un SSL flexible detrás de un DNS proxy como Cloudflare. Gracias.

Confirmado que funciona. Muchas gracias, esto soluciona muchos problemas que teníamos con APIs e IFrames. El sitio no tiene HTTPS habilitado, pero necesitamos que algunas páginas lo tengan. WordPress debería tener esto como configuración por defecto...

Para tu información - ese código puede ir en cualquier parte pero debe estar antes de require_once( ABSPATH . 'wp-settings.php' );
que se encuentra al final del archivo.

Otra versión para los libros, solo añade esto al inicio de wp-config.php
La razón es que puede haber balanceadores de carga o algo que no pase el valor correcto de https, así que tienes que tomarlo de otro lugar y simularlo 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';
}

Acabo de usar esta solución para una instalación de WordPress 5.5.1 que corre detrás de un HAProxy en un firewall pfsense. Las otras opciones listadas no parecían funcionar correctamente, al menos sin algún ajuste adicional a HAProxy y a las cabeceras que envía.

Pregunta de hace 5 años...
Vale, tuve este error después de instalar mi Certificado SSL y cambiar todos los enlaces que eran http
a https
usando el wp-cli.phar encontrado aquí.
Probé varias configuraciones y ninguna pareció resolver esto, a menos que configurara 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ó llegar a la página de inicio de sesión, pero luego no pude iniciar sesión. Probé la respuesta dos pero desafortunadamente no ayudó, hasta que hice el siguiente cambio:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// en algunas configuraciones HTTP_X_FORWARDED_PROTO podría contener
// una lista separada por comas, ej. http,https
// así que verifica la existencia de https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)
$_SERVER['HTTPS']='on';
Por alguna razón, no sé por qué, tuve que cambiar el
!== false
a
!== true
Estoy ejecutando nginx como host y proxy inverso a nginx unit... Si alguien tiene idea de por qué eso funcionó, por favor hágamelo saber

En realidad... tuve este problema y la solución fue bastante sencilla y hasta vergonzosa. Por alguna razón, en el hosting la carpeta wp-admin había sido eliminada y por eso no había acceso al wp-admin con este mismo mensaje de error.
Después de horas probando tantas formas diferentes, simplemente me di cuenta de esto y al descargar y volver a subir la carpeta, todo volvió a funcionar con normalidad.
Chicos, verifiquen esto, puede ser tan simple como eso.

Tuve el mismo problema cuando alojé mi sitio en el servicio Azure webapp para Linux.
Prueba este plugin. Ten cuidado cuando lo actives, funciona. https://wordpress.org/plugins/jsm-force-ssl/
Este plugin utiliza filtros nativos de WordPress, en lugar del búfer de salida de PHP, para máxima confiabilidad, rendimiento y compatibilidad con caché (este plugin no afecta el rendimiento del caché), junto con redirecciones 301 permanentes para el mejor SEO (las redirecciones 301 se consideran las mejores para SEO al pasar de HTTP a HTTPS).
Respeta variables de proxy / balanceador de carga para entornos de hosting grandes:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Requisitos:
Tu servidor web debe estar configurado con un certificado SSL y debe poder manejar solicitudes HTTPS.
Simplemente activa el plugin y listo:
No hay ajustes de configuración en el plugin, y no se realizan cambios en tu configuración de WordPress — simplemente activa o desactiva el plugin para habilitar / deshabilitar los filtros y redirecciones dinámicas.

Me encontré con el mismo problema, así que después de horas de investigación y ajustes logré que funcionara. Compartiré todo lo que hice porque no estoy seguro si todo está relacionado.
Primero, estoy alojando mi sitio web de WordPress en cPanel, así que utilicé la herramienta Softaculous en cPanel para actualizar mi versión de WordPress.
En segundo lugar, actualicé mi base de datos de WordPress.
(Noté que mi archivo .htaccess en la carpeta raíz de mi sitio web se actualizó con la adición de RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
)
Luego revisé el archivo .htaccess de mi carpeta wp-admin y vi estos comandos:
Order Allow,Deny
Deny from all
Fui a leer en el sitio web de WordPress que esos comandos están destinados a prevenir el acceso web a los archivos en esa carpeta, pero este no era un comportamiento que necesitaba (creo)
Así que los comenté y pude cargar mi sección de administración.

Gracias, eso funcionó para mí. Me alegraste el día
/** SSL */
define('FORCE_SSL_ADMIN', true);
// en algunas configuraciones HTTP_X_FORWARDED_PROTO podría contener
// una lista separada por comas, ej. http,https
// así que verifica la existencia de https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

¿Esa es solo la respuesta de Elias?
