Ich habe eine WordPress-Site hinter einem Reverse-Proxy. Die Site befindet sich über http, mit Ausnahme des Bereichs wp-admin, der sich unter https befindet. Wir haben keine BasicAuth oder irgendetwas, das über dem Admin-Bereich läuft.
Eines unserer Front-End-Plugins schlägt fehl, weil es von einer Front-End-http-Seite aus einen Aufruf an https: //admin-ajax.php ausführt, und Browser scheinen dieses Verhalten nicht zu mögen. (Wenn es darauf ankommt, enthält die URL-Zeichenfolge Nonces.)
Was ist die beste Möglichkeit, Front-End-Aufrufe von admin-ajax.php zuzulassen? Soll ich alle Aufrufe dieser Datei von https nach http umleiten? Wenn ja, wie kann ich das tun, während alle anderen Dateien unter/wp-admin unter https gespeichert sein müssen?
Anregungen wäre sehr dankbar.
PS: Der folgende Code ist der, den wir derzeit in wp-config haben:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
Ich würde empfehlen, diese Konstante in Ihrem wp-config.php
zu definieren, um HTTPS auf admin zu erzwingen:
define('FORCE_SSL_ADMIN', true);
Es gibt auch eine Funktion namens is_admin()
, die in Ihrem Fall hilfreich sein kann.
if ( is_admin() ) {
$_SERVER['HTTPS'] = 'on';
}
Wenn Sie jedoch eine Regel auf Ihrem Webserver haben, die die Ausführung aller wp-admin
- und wp-login.php
-Anforderungen über SSL erzwingt, müssen Sie eine Ausnahme für die admin-ajax.php
-Datei hinzufügen. Ich bin nicht sicher, wie ich das in Apache implementieren soll, aber für NGINX wäre der einfachste Weg so etwas wie:
if ($request_uri !~* "^/wp-admin/admin-ajax\.php") { rewrite "^/wp-(admin|login)" https://$Host$request_uri permanent; }
Hoffe das hilft!