Admin-Ajax.php, SSL, Non-SSL

时间:2014-12-04 作者:user64391

我有一个反向代理背后的WordPress网站。该站点通过http,但wp admin区域除外,该区域位于https下。我们没有BasicAuth或任何运行在管理区域顶部的东西。

我们的一个前端插件出现故障,因为它正在调用https://admin-ajax.php 浏览器似乎不喜欢这种行为。(如果有关系,URL字符串包含nonce)

允许前端调用admin ajax的最佳方式是什么。php?我是否应该将所有对该文件的调用从https重定向到http?如果是,我如何做到这一点,同时仍然要求/wp admin下的所有其他文件都使用https?

如有任何建议,将不胜感激。

PS:下面的代码是我们当前在wp配置中的代码:

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

1 个回复
SO网友:Tiago Hillebrandt

我建议在wp-config.php 要在admin上强制使用HTTPS,请执行以下操作:

define(\'FORCE_SSL_ADMIN\', true);
还有一个函数is_admin() 这对你的情况很有帮助。

if ( is_admin() ) {
    $_SERVER[\'HTTPS\'] = \'on\';
}
但是,如果您的web服务器中有一条规则强制所有wp-adminwp-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; }
希望这有帮助!

结束

相关推荐

WP多站点.htaccess干扰cgi-bin

我目前正在为我的公司安装WordPress多站点,我遇到了一个问题。设置是multisite runs out of a subdirectory (/wp) 但似乎是网站的根源。它正在使用subdirectories for each site 在网络上(例如domain.com/news)。我一直在关注wordpress。org指南,安装运行良好。问题是,我发现我需要为WordPress添加的mod\\u重写会导致任何问题。/cgi-bin文件夹中的pl脚本停止工作(错误403)。我知道它们非常古老;