Si su sitio web está en un servicio de equilibrio de carga que maneja SSL, es posible que su servidor no obtenga nada en la variable de servidor $_SERVER['HTTPS']
, y $_SERVER['SERVER_PORT']
tenga 80 cuando debería ser 443 (vea esto Respuesta de desbordamiento de pila para más detalles).
Si este es el caso, y no puedes hacer que tu anfitrión cambie eso, entonces es posible que necesites manipularlo y decirle a PHP que de todos modos es SSL. Configure las URL de su casa y sitio para usar https, de modo que todas las URL generadas por WordPress salgan como URL https. Luego coloque este código en un complemento ( aquí hay uno ya hecho , colóquelo en su carpeta de complementos y actívelo):
// if site is set to run on SSL, then force-enable SSL detection!
if (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}
NB: esto puede ser contraproducente para usted, porque probablemente tenga un código (en complementos o su propio código) que verifica si la página se cargó a través de SSL, y redirige si no lo fue. ¡Tu servidor no podrá probar esto ahora! Como tal, también debe agregar un poco de JavaScript a su página para que exista un cierto nivel de seguridad de que sus páginas seguras se cargarán a través de SSL (esto también se hace con el complemento listo para usar):
<script>
if (document.location.protocol != "https:") {
document.location = document.URL.replace(/^http:/i, "https:");
}
</script>
NB: ¡esto no es infalible! Sin embargo, debería detectar la mayoría de las situaciones, una excepción es alguien que deshabilita JavaScript y luego edita la URL para forzar su regreso a http. Si lo hacen, tal vez merecen que sus credenciales de tarjeta de crédito se vendan a Elbonia.