web-dev-qa-db-ja.com

Admin-Ajax.php、SSL、非SSL

私はリバースプロキシの背後にWordPressサイトがあります。 httpsの下にあるwp-admin領域を除いて、サイトはhttpの上にあります。 BasicAuthや管理領域上で実行されているものはありません。

フロントエンドのhttpページから https://admin-ajax.php への呼び出しを行っているため、フロントエンドプラグインの1つが失敗しています。ブラウザはそのような動作を好まないようです。 (重要な場合は、URL文字列にナンスが含まれています)

Admin-ajax.phpへのフロントエンド呼び出しを可能にするための最良の方法は何ですか?そのファイルへのすべての呼び出しをhttpsからhttpにリダイレクトする必要がありますか?はいの場合、/ wp-adminの下にある他のすべてのファイルをhttpsの下に置くことを要求しながら、どうすればよいでしょうか。

任意の提案は大歓迎です。

シモンズ:以下のコードは、我々が現在wp-configに持っているものです:

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
3
user64391

管理者にHTTPSを強制するために、wp-config.phpでこの定数を定義することをお勧めします。

define('FORCE_SSL_ADMIN', true);

また、is_admin()という名前の関数もあります。

if ( is_admin() ) {
    $_SERVER['HTTPS'] = 'on';
}

ただし、Webサーバーにすべてのwp-adminおよびwp-login.php要求をSSL経由で実行するように強制するルールがある場合は、admin-ajax.phpファイルに例外を追加する必要があります。 Apacheでこれを実装する方法はわかりませんが、NGINXの場合、最も簡単な方法は次のようになります。

if ($request_uri !~* "^/wp-admin/admin-ajax\.php") { rewrite "^/wp-(admin|login)" https://$Host$request_uri permanent; }

お役に立てれば!

1