まず、私のサーバーはロードバランサーの後ろに座っています。SSL証明書はロードバランサーに置かれ、HTTPSを処理します。ポート443で受信したデータは、ポート80でHTTPを使用してWordpressサーバーに転送されます。
ただし、wordpressとphpはサーバー構成を認識しません。これにより、ブラウザーは有効なSSL証明書の有効性について疑わしくなります。
これを修正するために、functions.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を「オン」に保ち、管理者アクセスを保持するにはどうすればよいですか?
概要:
- functions.phpにHTTP_X_FORWARDED_PROTOロジックを追加する前に、wp-admin /にアクセスできます
- functions.phpにHTTP_X_FORWARDED_PROTOロジックを追加した後、wp-admin /にアクセスできません
- functions.phpからHTTP_X_FORWARDED_PROTOロジックを削除した後、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);