如何禁用WordPress程序REST API功能且移除wp-json链接
WordPress是什么?
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。
WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。
WordPress官方支持中文版,最新版本为5.0,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。
WordPress算是当前比较好用的PHP程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而且WordPress官方的更新、第三方的插件主题丰富,让这个程序变得越来越丰富多样,但是随着不断的升级功能,也会增加程序的负担和不安全因素。
问题发现:
今天我在用WordPress5.0的时候,突然发现请求头信息header中多了一个link rel="https://api.w.org/",根据链接和字面意思可以认为是reset api;但是我们网站不需要这个玩意怎么解决呢?
于是我们第一时间想到搜索,看有没有遇到相同问题的人?万能的搜索引擎帮我们找到相同的问题,但试过几个依然无效果;
我们发现从WordPress4.4开始增加REST API功能, 对于一般的网站是没有需要的,反而会拖累网站的速度,所以我们尽可能的禁止掉这些不必要的功能需求。我们在源代码中可以看到类似的链接字符。
<link rel='https://api.w.org/' href=' https://www.52it.club/wp-json/' />
解决方案:
1、使用非插件方式解决:
将下面代码添加到主题functions.php文件中,去除head里面输出的链接信息。
//屏蔽 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 );
2、使用disable-json-api插件方式解决:
1、在插件安装哪里搜索 disable-json-api ,安装启动即可;
2、手动下载复制到插件安装目录,启动即可,下载地址:https://wordpress.org/plugins/disable-json-api/