这个坑值得记一笔。自写的 sitemap 生成脚本按 ID 升序输出,新文章排在文件末尾第 9 万行,提交一周后新文仍停在已发现但尚未编入索引。

真正麻烦的地方在于,几个原因的现象几乎一样。蜘蛛按文件顺序读取,靠后的地址本轮常常读不到;单文件过大,读取中途超时只处理了前半段;新文没有内链入口,sitemap 是唯一发现路径。

上来先看新文在文件中的位置

curl -s https://www.example.com/sitemap.xml | grep -n 'new-post'

接着改成按发布时间倒序输出

SELECT ID FROM wp_posts WHERE post_status='publish' ORDER BY post_date DESC LIMIT 5000;

新文单独放一个小文件

curl -s https://www.example.com/sitemap-new.xml | wc -l

等前面都确认过,再在 robots 里声明新文件

curl -s https://www.example.com/robots.txt | grep -i sitemap

这次没动代码,只在配置和运行环境上找原因。

改完先别撤,确认这几项。新文出现在文件前一百行,提交后二十四小时内日志出现对该地址的抓取,索引状态转为已编入。

顺序只影响发现速度,文件本身仍要控制在五万条以内,否则尾部照样读不到。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189