Tout d'abord, mon serveur est assis derrière un équilibreur de charge. Mon certificat SSL se trouve sur l'équilibreur de charge et gère HTTPS. Les données entrant sur le port 443 sont transmises au serveur Wordpress en utilisant HTTP sur le port 80.
Cependant, wordpress et php ne connaissent pas la configuration de mon serveur. Cela fait que le navigateur se méfie de la validité de mon certificat SSL valide.
Pour résoudre ce problème, j'ai ajouté le code suivant à functions.php. J'ai trouvé ce code ici et le codex est d'accord .
/**
* 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';
}
Cela fonctionne très bien pour le frontend, mais maintenant / wp-admin / est inaccessible même avec mon compte Admin. Une fois connecté, je reçois un message: "Désolé, vous n'êtes pas autorisé à accéder à cette page." Aucune autre aide n'est fournie.
J'ai donc cherché dans le dossier wp-admin et découvert que les mots "Désolé, vous n'êtes pas autorisé à accéder à cette page." apparaissent 17 fois différents.
La plupart de ces messages d'erreur sont associés à une vérification des autorisations utilisateur.
Comment puis-je garder HTTPS activé et conserver l'accès administrateur?
Sommaire:
- Avant d'ajouter la logique HTTP_X_FORWARDED_PROTO à functions.php, je peux accéder à wp-admin /
- Après avoir ajouté la logique HTTP_X_FORWARDED_PROTO à functions.php, je ne peux pas accéder à wp-admin /
- Après avoir supprimé la logique HTTP_X_FORWARDED_PROTO dans functions.php, je ne peux pas accéder à wp-admin /
MISE À JOUR:
J'ai découvert que le message d'erreur provient de wp-admin / menu.php et de ce morceau de code en bas. J'ai ajouté menu.php
à la fin de l'erreur pour comprendre qu'il s'agissait de ce fichier.
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 );
}
Je ne comprends toujours pas comment résoudre ce problème.
define('FORCE_SSL_ADMIN', true);
Réponses:
Un merci spécial à user42826.
Selon le codex:
Les actions suivantes résoudront le problème.
Ajoutez ceci à wp-config.php. ( référence codex )
Supprimez-le de functions.php car il n'est pas nécessaire.
la source
require_once(ABSPATH . 'wp-settings.php');
ligne. Un merci spécial à jtl dans cette réponse.