Zunächst sitzt mein Server hinter einem Load Balancer. Mein SSL-Zertifikat befindet sich auf dem Load Balancer und verarbeitet HTTPS. Die an Port 443 eingehenden Daten werden über HTTP an Port 80 an den Wordpress-Server weitergeleitet.
Allerdings kennen WordPress und PHP meine Serverkonfiguration nicht. Dies führt dazu, dass der Browser hinsichtlich der Gültigkeit meines gültigen SSL-Zertifikats misstrauisch wird.
Um dieses Problem zu beheben, habe ich die Datei functions.php um den folgenden Code erweitert. Ich habe diesen Code hier gefunden und der Codex stimmt zu .
/**
* 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';
}
Dies funktioniert hervorragend für das Frontend, aber jetzt ist der Zugriff auf / wp-admin / auch mit meinem Admin-Konto nicht möglich. Nach dem Anmelden erhalte ich die Nachricht "Entschuldigung, Sie dürfen nicht auf diese Seite zugreifen." Es wird keine andere Hilfe bereitgestellt.
Also habe ich den Ordner wp-admin durchsucht und festgestellt, dass die Wörter "Entschuldigung, Sie dürfen nicht auf diese Seite zugreifen." erscheinen 17 verschiedene Male.
Die meisten dieser Fehlermeldungen sind mit einer Überprüfung der Benutzerberechtigungen verbunden.
Wie lasse ich HTTPS aktiviert und behalte den Administratorzugriff?
Zusammenfassung:
- Bevor ich die HTTP_X_FORWARDED_PROTO-Logik zu functions.php hinzufüge, kann ich auf wp-admin / zugreifen.
- Nach dem Hinzufügen der HTTP_X_FORWARDED_PROTO-Logik zu functions.php kann ich nicht auf wp-admin / zugreifen.
- Nach dem Entfernen der HTTP_X_FORWARDED_PROTO-Logik zu functions.php kann ich nicht auf wp-admin / zugreifen.
AKTUALISIEREN:
Ich habe festgestellt, dass die Fehlermeldung von wp-admin / menu.php und diesem Codestück unten kommt. Ich menu.php
habe am Ende des Fehlers hinzugefügt , um herauszufinden, dass es sich um diese Datei handelt.
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 );
}
Ich verstehe immer noch nicht, wie ich das beheben kann.
define('FORCE_SSL_ADMIN', true);
Antworten:
Besonderer Dank geht an user42826.
Nach dem Kodex:
Die folgenden Aktionen lösen das Problem.
Fügen Sie dies zu wp-config.php hinzu. ( Codex-Referenz )
Entfernen Sie dies aus functions.php, da es nicht notwendig ist.
quelle
require_once(ABSPATH . 'wp-settings.php');
Zeile einfügen . Besonderer Dank geht an jtl in dieser Antwort.