这类问题我又碰上了一次。站点用 /en/ 、/jp/ 、/de/ 三个目录做多语言,robots.txt 沿用旧站规则,里面有一条 Disallow: /en/ 是当年测试用的。英文版 4 万页三个月没被抓过一次。
第一反应是「上线检查只看了首页是否可访问,没有跑 robots 测试」,验证下来不成立。
排查方向其实有限,先把可能性排一排。多语言共用一个 robots 文件,测试规则从没清理;英文目录的 sitemap 单独提交过,但被 robots 挡住后整份失效;多语言目录的入口只放在页脚 蜘蛛很难发现这些地址。
第一件事是用标准 UA 检查英文目录能否抓取
curl -s -A 'Mozilla/5.0 (compatible; Baiduspider/2.0)' -o /dev/null -w '%{http_code}\n' https://www.example.com/en/post/1
然后删掉测试期残留的 Disallow 规则
curl -s https://www.example.com/robots.txt | grep -n 'Disallow'
再往下按语言目录分别写 sitemap 并单独提交
curl -s https://www.example.com/en/sitemap.xml | grep -c '<loc>'
剩下的就是在抓取诊断里对英文页发起一次抓取
curl -sI https://www.example.com/en/post/1
怎么算真的好了,看的是同一批现象。删掉规则并重新提交后,英文目录第三天开始出现在抓取日志里,六周收录从 0 涨到 1.1 万条。
补一句。多语言站建议按目录单独维护 sitemap 并做一次 robots 逐目录检查,一条历史规则就能让整个语种消失。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
