Po pierwsze mój serwer siedzi za modułem równoważenia obciążenia. Mój certyfikat SSL znajduje się w module równoważenia obciążenia i obsługuje HTTPS. Dane przychodzące przez port 443 są przekazywane do serwera Wordpress za pomocą protokołu HTTP na porcie 80.
Jednak wordpress i php nie znają konfiguracji mojego serwera. To powoduje, że przeglądarka staje się podejrzana co do ważności mojego ważnego certyfikatu SSL.
Aby to naprawić, dodałem następujący kod do functions.php. Znalazłem ten kod tutaj i kodeks zgadza się .
/**
* 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';
}
Działa to świetnie dla interfejsu, ale teraz / wp-admin / jest niedostępny nawet na moim koncie administratora. Po zalogowaniu otrzymuję komunikat „Niestety nie masz dostępu do tej strony”. Nie udzielono żadnej innej pomocy.
Przeszukałem więc folder wp-admin i odkryłem, że słowa „Przepraszamy, nie masz dostępu do tej strony”. pojawiają się 17 razy.
Większość tych komunikatów o błędach jest powiązanych z kontrolą uprawnień użytkownika.
Jak mogę włączyć HTTPS i zachować dostęp administratora?
Podsumowanie:
- Przed dodaniem logiki HTTP_X_FORWARDED_PROTO do functions.php mogę uzyskać dostęp do wp-admin /
- Po dodaniu logiki HTTP_X_FORWARDED_PROTO do functions.php nie mogę uzyskać dostępu do wp-admin /
- Po usunięciu logiki HTTP_X_FORWARDED_PROTO do functions.php nie mogę uzyskać dostępu do wp-admin /
AKTUALIZACJA:
Odkryłem, że komunikat o błędzie pochodzi z wp-admin / menu.php i tego fragmentu kodu na dole. Dodałem menu.php
na końcu błędu, aby dowiedzieć się, że to ten plik.
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 );
}
Nadal nie rozumiem, jak to naprawić.
define('FORCE_SSL_ADMIN', true);
Odpowiedzi:
Specjalne podziękowania dla user42826.
Zgodnie z kodeksem:
Poniższe działania rozwiążą problem.
Dodaj to do wp-config.php. ( odniesienie do kodeksu )
Usuń to z functions.php, ponieważ nie jest to konieczne.
źródło
require_once(ABSPATH . 'wp-settings.php');
wierszem. Specjalne podziękowania dla jtl w tej odpowiedzi.