图龙网

怎样解决WordPress站点健康提示REST API错误及解决办法

作者: 图龙网 发布时间: 2021-04-25 395 人阅读

简单的说就是通过这个 REST API 可以很轻松的获取网站的数据,可应用于其他网站、手机 APP 或小程序等;但对于一般的网站是没有需要的,反而会拖累网站的速度,而且 REST API 采用 GET 请求方式,这就为 DDOS 攻击提供了一个新的攻击途径,所以我们应尽可能的禁止掉这些不必要的功能需求,并且去掉 head 里面输出 wp-json 链接。

既然他报错了,我们先来看看接口是否正常开启。查看 WP JSON REST API 是否开启的方法:

http://域名/wp-json/,若输出数据则是开启状态。

有数据输出说明接口正常开启,由于我们用不到REST API接口,所以接下来我们需要关闭这个功能。如果我们想兼容所有版本的 WordPress,我们可以直接使用插件Disable REST APIDisable WP REST API来完全禁用 REST API;但我更倾向纯代码的方法,在这里就介绍下代码版兼容所有 WordPress 版本的完全禁用 REST API 或者说移除 head 里面 wp-json 链接的方法。

将下面的代码添加到当前主题函数模板 functions.php 中:

/*
 * 屏蔽 REST API
 */
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
// 移除头部wp-json标签与HTTP header中的link
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('template_redirect', 'rest_output_link_header', 11);
add_filter('rest_authentication_errors', 'demo_disable_rest_api');
function demo_disable_rest_api($access)
{
    return new WP_Error('rest_disabled', __('The REST API on this site has been disabled.'), ['status' => rest_authorization_required_code()]);
}

我们再来看看WP JSON REST API 是否已经关闭。

如图WP JSON REST API已经成功关闭了

关闭接口之后我们会发现在健康状态栏依然会有这2个报错。没关系,我们继续!

站点健康功能,用于了解当前网站运行中有哪些问题需要改进,位置在WP后台→工具→站点健康。
该功能源自 Site Health Tool Manager 插件,也就是插件的简化版。

为什么要集成网站健康检测功能,据说是为开发人员方便测试,有人说很有用,个人认为没有任何用处,暴露主机环境信息,另外不知道这玩意是否经常自己在后台偷偷运行检测,还是打开后再执行检测,试过一次就再也不想打开。

可以通过下面的方法有选择性地禁止某些项目检测或者禁止全部项目检测。

将下面的代码添加到当前主题函数模板 functions.php 中:

//禁用 PHP 版本检测,示例:
function prefix_remove_site_health( $tests ) {
	unset( $tests['direct']['php_version'] );//禁止PHP检测
	return $tests;
}
add_filter( 'site_status_tests', 'prefix_remove_site_health' );

通过site_status_tests过滤器,返回时触发WP_Site_Health::get_tests()

注:$tests是一个数组。包括$tests['direct']$tests['async'],在加载站点健康状态之前,直接测试在 PHP 中运行,并且在页面加载之后通过 Ajax 调用触发异步测试。

禁用更多功能检测请对照: /wp-admin/includes/class-wp-site-health.php

例如:

unset( $tests['direct']['php_version'] );//禁止PHP检测
 
unset( $tests['direct']['wordpress_version'] );//禁止程序版本检测
 
unset( $tests['direct']['plugin_version'] );//禁止插件版本检测

一行一个,以此类推。

禁止全部代码:

/*
 * 屏蔽 健康状态检测
 */
function prefix_remove_site_health( $tests ) {
	unset( $tests['direct']['php_version'] );
	unset( $tests['direct']['wordpress_version'] );
	unset( $tests['direct']['plugin_version'] );
	unset( $tests['direct']['theme_version'] );
	unset( $tests['direct']['sql_server'] );
	unset( $tests['direct']['php_extensions'] );
	unset( $tests['direct']['php_default_timezone'] );
	unset( $tests['direct']['php_sessions'] );
	unset( $tests['direct']['utf8mb4_support'] );
	unset( $tests['direct']['https_status'] );
	unset( $tests['direct']['ssl_support'] );
	unset( $tests['direct']['scheduled_events'] );
	unset( $tests['direct']['http_requests'] );
	unset( $tests['direct']['is_in_debug_mode'] );
	unset( $tests['direct']['dotorg_communication'] );
	unset( $tests['direct']['background_updates'] );
	unset( $tests['direct']['loopback_requests'] );
	unset( $tests['direct']['rest_availability'] );
	return $tests;
}
 
add_filter( 'site_status_tests', 'prefix_remove_site_health' );

检测项全部禁止后,你会看到 站点健康 检测结果显示100%,完美!

 

图龙网关注各大互联网媒体前沿设计风格,紧跟行业趋势,精选大气优质好资源
图龙网 » 怎样解决WordPress站点健康提示REST API错误及解决办法

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
找不到素材资源介绍文章里的示例图片?
对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

发表评论


提供中小企业建站正版精品资源信息

正品模板 建站教程