Die Einstellung $ _SERVER = ‘on’ verhindert den Zugriff auf wp-admin

Zunächst sitzt mein Server hinter einem Load Balancer. Mein SSL-Zertifikat befindet sich auf dem Lastenausgleich und verarbeitet HTTPS. Die an Port 443 eingehenden Daten werden über Port 80 an den WordPress-Server weitergeleitet.

WordPress und PHP kennen meine Serverkonfiguration jedoch nicht. Dadurch wird der Browser über die Gültigkeit meines gültigen SSL-Zertifikats verdächtig.

Um das zu beheben, habe ich functions.php folgenden Code hinzugefügt. Ich habe diesen Code hier gefunden und der Codex stimmt dem 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'; } 

Das funktioniert gut für das Frontend, aber jetzt ist der / wp-admin / auch mit meinem Admin-Account nicht erreichbar. Nachdem ich mich eingeloggt habe, erhalte ich eine Nachricht: “Entschuldigung, Sie dürfen nicht auf diese Seite zugreifen.” Keine andere Hilfe wird zur Verfügung gestellt.

Also habe ich den Ordner wp-admin durchsucht und festgestellt, dass die Worte “Sorry, Sie dürfen nicht auf diese Seite zugreifen.” erscheinen 17 verschiedene Zeiten.

Die meisten dieser Fehlermeldungen sind mit einer Benutzerberechtigungsüberprüfung verknüpft.

Wie kann ich HTTPS beibehalten und den Administratorzugriff beibehalten?

Zusammenfassung:

  • Vor dem Hinzufügen von HTTP_X_FORWARDED_PROTO Logik zu functions.php kann ich auf wp-admin /
  • Nach dem Hinzufügen von HTTP_X_FORWARDED_PROTO Logik zu functions.php kann ich nicht auf wp-admin /
  • Nach dem Entfernen der HTTP_X_FORWARDED_PROTO-Logik in functions.php kann ich nicht auf wp-admin /

AKTUALISIEREN:

Ich habe festgestellt, dass die Fehlermeldung von wp-admin / menu.php kommt und dieses Stück Code am unteren Rand. Ich habe menu.php am Ende des Fehlers hinzugefügt, um herauszufinden, dass es diese Datei war.

 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.

Solutions Collecting From Web of "Die Einstellung $ _SERVER = ‘on’ verhindert den Zugriff auf wp-admin"

Besonderer Dank geht an user42826.

Nach dem Kodex:

Wenn WordPress hinter einem Reverse-Proxy gehostet wird, der SSL bereitstellt, aber selbst ohne SSL gehostet wird, senden diese Optionen zunächst alle Anfragen in eine unendliche Weiterleitungsschleife. Um dies zu vermeiden, können Sie WordPress so konfigurieren, dass der HTTP_X_FORWARDED_PROTO-Header erkannt wird (vorausgesetzt, Sie haben den Reverse-Proxy richtig konfiguriert, um diesen Header festzulegen).

Die folgenden Aktionen lösen das Problem.

Fügen Sie dies wp-config.php hinzu. ( Kodex Referenz )

 /* SSL Settings */ define('FORCE_SSL_ADMIN', true); /* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */ if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; } 

Entfernen Sie dies aus der Datei functions.php, da dies unnötig ist.

 /** * 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'; }