换域名时 robots.txt 里的 Sitemap 声明还写着老域,新域那份只留了一条 Disallow。百度站长平台一直显示未检测到 sitemap,每次都要手动提交才收。

一开始怀疑是「声明用了 http 地址,站点已经全站 https」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。robots 模板里的域名写死成旧值。少数情况下是新域 robots 是复制过来的,漏了 Sitemap 行。

另外,索引文件地址变更后没有同步更新。

上来先看 robots 里的 Sitemap 行

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

随后验证声明的地址能不能打开

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/sitemap_index.xml

补一行带协议的绝对地址

echo 'Sitemap: https://www.example.com/sitemap_index.xml' >> /data/www/robots.txt

末了在

百

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

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

恢复的判定其实很直接。补上声明后百度平台第二天就识别到 sitemap,索引量在两周内回升到迁移前的七成。

这里还有个坑。robots 里的 Sitemap 必须是带协议的绝对地址,写相对路径等于没写。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189