这个坑值得记一笔。robots.txt 里写了 Sitemap: http://www.example.com/sitemap.xml,站点早就全站 https,百度站长平台的 sitemap 状态一直显示未发现。

刚开始盯着「同一份文件里声明了三条 sitemap,其中两条已失效」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。声明的地址会 301 到 https,部分引擎不跟随这条跳转;Sitemap 指令写在了 User-agent 分组内,被当成组内规则;域名大小写与证书里的 CN 不一致,握手阶段被拒。

先核对 robots 里声明的地址

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

然后确认该地址是否发生跳转

curl -sI http://www.example.com/sitemap.xml | grep -Ei 'HTTP/|location'

接着改成 https 绝对地址并放在文件末尾

Sitemap: https://www.example.com/sitemap.xml

等前面都确认过,再在站长平台手动补交一次

curl -s https://www.example.com/sitemap.xml | head -3

白天有业务在跑,能验证的部分都压到了晚上做。

改完先别撤,确认这几项。百度站长平台在两天内识别到 sitemap,状态从等待抓取变成正常,抓取条数开始增长。

Sitemap 指令要写协议完全一致的绝对地址,跨协议的跳转在部分引擎那里等于没有声明。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189