Pertama server saya duduk di belakang load balancer. Sertifikat SSL saya duduk di penyeimbang beban dan menangani HTTPS. Data yang masuk pada port 443 diteruskan ke server Wordpress menggunakan HTTP pada port 80.
Namun, wordpress dan php tidak tahu konfigurasi server saya. Ini menyebabkan browser menjadi curiga tentang validitas sertifikat SSL saya yang valid.
Untuk memperbaikinya saya menambahkan kode berikut ke functions.php. Saya menemukan kode ini di sini dan codex setuju .
/**
* 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';
}
Ini berfungsi baik untuk frontend, tetapi sekarang / wp-admin / tidak dapat diakses bahkan dengan akun Admin saya. Setelah masuk saya menerima pesan, "Maaf, Anda tidak diizinkan mengakses halaman ini." Tidak ada bantuan lain yang disediakan.
Jadi saya mencari melalui folder wp-admin dan menemukan bahwa kata-kata "Maaf, Anda tidak diizinkan mengakses halaman ini." muncul 17 waktu yang berbeda.
Sebagian besar pesan kesalahan ini dikaitkan dengan pemeriksaan izin pengguna.
Bagaimana cara menjaga HTTPS 'aktif' dan mempertahankan akses admin?
Ringkasan:
- Sebelum menambahkan logika HTTP_X_FORWARDED_PROTO ke functions.php saya dapat mengakses wp-admin /
- Setelah menambahkan logika HTTP_X_FORWARDED_PROTO ke functions.php saya tidak dapat mengakses wp-admin /
- Setelah menghapus logika HTTP_X_FORWARDED_PROTO ke functions.php saya tidak dapat mengakses wp-admin /
MEMPERBARUI:
Saya telah menemukan bahwa pesan kesalahan berasal dari wp-admin / menu.php dan potongan kode ini di bagian bawah. Saya menambahkan menu.php
ke akhir kesalahan untuk mengetahui bahwa itu adalah file ini.
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 );
}
Saya masih tidak mengerti bagaimana cara memperbaikinya.
define('FORCE_SSL_ADMIN', true);