前端用 axios 发 POST 到 /wp-admin/admin-ajax.php 取下一页,URL 一直是 /list/,蜘蛛日志里只有第一页,后续文章从未被抓。

一开始怀疑是「没有 /page/2/ 这样的静态地址,无法通过 URL 直达」,查了一圈,方向不对。

真正麻烦的地方在于,几个原因的现象几乎一样。内容由 JS 请求返回,初始 HTML 里没有任何后续链接。也可能是POST 接口对蜘蛛不可抓取,请求方法就不对。

另外,sitemap 里也没有把后续分页列出。

上来先确认源码里有没有分页链接

curl -s https://www.example.com/list/ | grep -c 'page/2'

补一套服务端分页地址

curl -sI https://www.example.com/list/page/2/

接着在列表底部输出真实链接

add_filter('the_content', function($c){ return $c.paginate_links(array('type'=>'plain')); });

剩下的就是确认分页能被 sitemap 发现

curl -s https://www.example.com/sitemap.xml | grep -c 'page/2'

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

恢复的判定其实很直接。第二页返回 200 且 HTML 里有下一批文章标题,蜘蛛日志中 /page/2/ 到 /page/5/ 一周内都被抓过。

补一句。异步分页体验好但收录差,两者可以并存,保留一套静态地址给蜘蛛即可。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189