По-перше, мій сервер сидить за балансиром навантаження. Мій сертифікат SSL сидить на балансирі навантаження та обробляє HTTPS. Дані, що надходять на порт 443, передаються на сервер Wordpress за допомогою HTTP на порт 80.
Однак wordpress та php не знають моєї конфігурації сервера. Це призводить до того, що браузер підозріло ставиться до дійсності мого дійсного сертифіката SSL.
Щоб виправити це, я додав наступний код до function.php. Я знайшов цей код тут і кодекс погоджується .
/**
* 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';
}
Це чудово підходить для фронтенду, але зараз / wp-admin / недоступний навіть для мого облікового запису адміністратора. Після входу в систему я отримую повідомлення: "Вибачте, ви не маєте доступу до цієї сторінки". Інша допомога не надається.
Тож я провів пошук у папці wp-admin і виявив, що слова "Вибачте, ви не маєте права доступу до цієї сторінки". з'являються 17 різних разів.
Більшість цих повідомлень про помилки пов’язані з перевіркою прав користувача.
Як утримувати HTTPS "увімкнено" та зберігати доступ адміністратора?
Підсумок:
- Перш ніж додати логіку HTTP_X_FORWARDED_PROTO до функцій.php, я можу отримати доступ до wp-admin /
- Після додавання логіки HTTP_X_FORWARDED_PROTO до function.php я не можу отримати доступ до wp-admin /
- Після видалення логіки HTTP_X_FORWARDED_PROTO до function.php я не можу отримати доступ до wp-admin /
ОНОВЛЕННЯ:
Я виявив, що повідомлення про помилку надходить від wp-admin / menu.php і цей фрагмент коду внизу. Я додав menu.php
в кінці помилки, щоб зрозуміти, що це був цей файл.
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 );
}
Я досі не розумію, як це виправити.
define('FORCE_SSL_ADMIN', true);