事情本身不复杂,线索都在日志里。文章分页地址是 /post/1?p=2,必应收录了 900 多条分页页,百度一条都没收。两边的抓取日志都正常,返回码都是 200,百度后台的抓取诊断也能打开,站长怀疑是参数写法的问题。
第一反应是「第 2 页只有 20 条标题 正文量不够百度直接跳过」,验证下来不成立。
真正麻烦的地方在于,几个原因的现象几乎一样。百度对 ?p= 这类分页参数按 Clean-param 归一 必应按 URL 原样处理。另一种情况是分页页 canonical 指向第一页 必应仍然单独收录。
不容易想到的是,必应收的是抓取时的版本 页面后来才加的 noindex。
第一件事是分别用两家 UA 取一次分页页
curl -s -A 'Baiduspider' 'https://www.example.com/post/1?p=2' | wc -c
随后查分页页的 canonical 指向
curl -s 'https://www.example.com/post/1?p=2' | grep -o '<link rel="canonical"[^>]*>'
给分页页加自指 canonical
add_filter('get_canonical_url', 'paginated_self_canonical');
剩下的就是在百度平台提交 Clean-param 规则
Clean-param: p /post/
改完先别撤,确认这几项。百度收录里分页地址逐步消失,必应保留可翻页入口,两边各按自己的规则收敛。
两家的参数处理逻辑不同,别用一份规则去套两个引擎,先确认 canonical 自指再谈删除。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
