Primeiro, meu servidor está sentado atrás de um balanceador de carga. Meu certificado SSL fica no balanceador de carga e lida com HTTPS. Os dados que chegam na porta 443 são encaminhados para o servidor Wordpress usando HTTP na porta 80.
No entanto, wordpress e php não conhecem a configuração do meu servidor. Isso faz com que o navegador suspeite da validade do meu certificado SSL válido.
Para corrigir isso, adicionei o seguinte código ao functions.php. Encontrei este código aqui e o códice concorda .
/**
* 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';
}
Isso funciona muito bem para o frontend, mas agora o / wp-admin / está inacessível mesmo com a minha conta de administrador. Após o login, recebo uma mensagem: "Desculpe, você não tem permissão para acessar esta página". Nenhuma outra ajuda é fornecida.
Então, procurei na pasta wp-admin e descobri que as palavras "Desculpe, você não tem permissão para acessar esta página". aparecem 17 vezes diferentes.
A maioria dessas mensagens de erro está associada a uma verificação de permissões do usuário.
Como mantenho o HTTPS 'ligado' e retiro o acesso de administrador?
Resumo:
- Antes de adicionar a lógica HTTP_X_FORWARDED_PROTO a functions.php, posso acessar wp-admin /
- Depois de adicionar a lógica HTTP_X_FORWARDED_PROTO a functions.php, não consigo acessar o wp-admin /
- Após remover a lógica HTTP_X_FORWARDED_PROTO para functions.php, não consigo acessar o wp-admin /
ATUALIZAR:
Eu descobri que a mensagem de erro vem de wp-admin / menu.php e esse pedaço de código na parte inferior. Eu adicionei menu.php
ao final do erro para descobrir que era esse arquivo.
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 );
}
Eu ainda não entendo como consertar isso.
define('FORCE_SSL_ADMIN', true);