Prima di tutto il mio server è seduto dietro un bilanciamento del carico. Il mio certificato SSL si trova sul bilanciamento del carico e gestisce HTTPS. I dati che arrivano sulla porta 443 vengono inoltrati al server Wordpress usando HTTP sulla porta 80.
Tuttavia, wordpress e php non conoscono la configurazione del mio server. Questo fa sì che il browser diventi sospettoso sulla validità del mio certificato SSL valido.
Per risolvere questo problema, ho aggiunto il seguente codice a Functions.php. Ho trovato questo codice qui e il codice è d'accordo .
/**
* 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';
}
Funziona benissimo per il frontend, ma ora / wp-admin / è inaccessibile anche con il mio account Admin. Dopo aver effettuato l'accesso, ricevo un messaggio "Spiacenti, non puoi accedere a questa pagina". Nessun altro aiuto è fornito.
Così ho cercato nella cartella wp-admin e ho scoperto che le parole "Mi dispiace, non ti è permesso accedere a questa pagina". compaiono 17 volte diverse.
La maggior parte di questi messaggi di errore sono associati a un controllo delle autorizzazioni utente.
Come posso mantenere HTTPS "attivo" e conservare l'accesso come amministratore?
Sommario:
- Prima di aggiungere la logica HTTP_X_FORWARDED_PROTO a Functions.php posso accedere a wp-admin /
- Dopo aver aggiunto la logica HTTP_X_FORWARDED_PROTO a Functions.php non riesco ad accedere a wp-admin /
- Dopo aver rimosso la logica HTTP_X_FORWARDED_PROTO in Functions.php non riesco ad accedere a wp-admin /
AGGIORNARE:
Ho scoperto che il messaggio di errore proviene da wp-admin / menu.php e da questo pezzo di codice in fondo. Ho aggiunto menu.php
alla fine dell'errore per capire che si trattava di questo file.
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 );
}
Non capisco ancora come risolvere questo problema.
define('FORCE_SSL_ADMIN', true);