Primero, mi servidor está sentado detrás de un equilibrador de carga. Mi certificado SSL se encuentra en el equilibrador de carga y maneja HTTPS. Los datos que ingresan en el puerto 443 se envían al servidor de Wordpress usando HTTP en el puerto 80.
Sin embargo, WordPress y PHP no conocen la configuración de mi servidor. Esto hace que el navegador sospeche de la validez de mi certificado SSL válido.
Para solucionar esto, agregué el siguiente código a functions.php. Encontré este código aquí y el códice está de acuerdo .
/**
* Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO
*/
if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS']='on';
}
Esto funciona muy bien para la interfaz, pero ahora / wp-admin / es inaccesible incluso con mi cuenta de administrador. Después de iniciar sesión, recibo un mensaje, "Lo siento, no puedes acceder a esta página". No se proporciona ninguna otra ayuda.
Así que busqué en la carpeta wp-admin y descubrí que las palabras "Lo siento, no puedes acceder a esta página". aparecen 17 veces diferentes.
La mayoría de estos mensajes de error están asociados con una verificación de permisos de usuario.
¿Cómo mantengo HTTPS 'activado' y conservo el acceso de administrador?
Resumen:
- Antes de agregar la lógica HTTP_X_FORWARDED_PROTO a functions.php, puedo acceder a wp-admin /
- Después de agregar la lógica HTTP_X_FORWARDED_PROTO a functions.php, no puedo acceder a wp-admin /
- Después de eliminar la lógica HTTP_X_FORWARDED_PROTO a functions.php, no puedo acceder a wp-admin /
ACTUALIZAR:
Descubrí que el mensaje de error proviene de wp-admin / menu.php y esta porción de código en la parte inferior. Agregué menu.php
al final del error para descubrir que era este archivo.
if ( !user_can_access_admin_page() ) {
/**
* Fires when access to an admin page is denied.
*
* @since 2.5.0
*/
do_action( 'admin_page_access_denied' );
wp_die( __( 'Sorry, you are not allowed to access this page. menu.php'), 403 );
}
Todavía no entiendo cómo solucionar esto.
define('FORCE_SSL_ADMIN', true);