自从网站上线以来,在Nginx日志中就经常发现有这样的 /wp-json/wp/v2/posts/909类似的爬取记录,刚开始也没在意,只是有点 疑惑为何有这样的访问。直到最近发现收录不太正常,才做一番研究。
搜索引擎爬取 /wp-json/wp/v2/posts/909 这类 WordPress REST API 地址,主要是浪费抓取预算、制造重复内容、小幅消耗资源;对排名几乎无正面作用,长期弊大于利。下面从影响、原因、处理三方面说清楚。
一、对网站的具体影响
1. SEO 层面(最关键)
- 浪费抓取预算:我觉搜索引擎给每个网站的爬取量有限。爬虫反复爬 API 接口,会挤占正常文章页面的抓取机会,导致新内容收录变慢、重要页面漏抓。
- 产生大量重复内容:同一篇文章同时存在「HTML 网页」和「JSON 接口」两个入口,搜索引擎会判定为重复内容,稀释原创权重,甚至造成页面互殴、排名波动。
- 无排名价值:JSON 页面中文标题、meta、结构化数据,也不适合用户阅读,搜索引擎不会把这类页面排到结果里,属于「无效收录」。
2. 服务器与安全层面
- 额外消耗带宽 / CPU:API 接口直接查数据库输出 JSON,比静态 HTML 更耗资源;大量爬虫并发请求会拖慢网站速度,甚至影响正常用户访问。
- 暴露网站结构与内容:
/wp-json/wp/v2/posts可批量导出所有文章(含草稿、私密内容),方便恶意爬虫 / 黑客快速采集全站数据,增加内容盗用与安全风险。
二、为什么搜索引擎会爬这个地址?
WordPress 4.7+ 默认开启 REST API(原来是自己没有关闭),自动暴露 /wp-json/ 端点。搜索引擎爬虫(如 Googlebot、百度爬虫)会:
- 发现
/wp-json/入口; - 顺着
wp/v2/posts、wp/v2/posts/909等路径爬取; - 把 JSON 当作普通页面抓取,纳入索引候选池。
三、怎么处理(推荐方案)
1. 用 robots.txt 禁止抓取(最安全)
在网站根目录 robots.txt 添加:
Disallow: /wp-json/
Disallow: /wp-json/wp/v2/
告诉搜索引擎不要爬这些接口,优先抓取正常页面。
2. 关闭 / 限制 REST API(彻底解决)
- 插件:安装 Disable REST API 关闭未登录用户的 API 访问;

阻止公开访问文章类 API。
修改配置文件,直接限制API接口访问
去后台 → 外观 → 主题编辑 → functions.php 拉到最下面,粘贴:
// 彻底关闭未登录用户的 WordPress REST API
add_filter( 'rest_authentication_errors', function( $access ) {
if( ! is_user_logged_in() ) {
return new WP_Error( 'rest_disabled', 'REST API disabled', array( 'status' => 403 ) );
}
return $access;
});
// 去掉头部输出的 API 地址
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
4. 验证效果
用 site:你的域名 wp-json 查是否有 JSON 页面被收录;若有,提交删除旧收录并更新 robots.txt,1–2 周可清理干净。
总结
说白了这类 API 地址被爬,无用处:因为最近发现百度搜录有异常,所以做了一个全面的检查;建议用 robots.txt 禁止 + 限制 REST API 公开访问,把爬虫资源留给真正有价值的网页。