换域名时 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 必须是带协议的绝对地址,写相对路径等于没写。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
