上线自动跳转后,英文页面的收录量一周内掉了一半,抓取日志里蜘蛛请求的地址全是 302 到中文首页。乍看像缓存或者权限的锅,追下去往往不是。
curl -A 'Googlebot' -sI https://example.com/en/ | head -3 # 爬虫应拿到 200 而非 302 curl -sI https://example.com/en/ | grep -i location
追下去是这么回事:判断只看浏览器语言头,没有排除爬虫标识,也没有给访客留手动切换入口,蜘蛛每次抓英文地址都被重定向,最终只能收录跳转后的目标页。
「浏览器语言跳转」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
具体做法是,先识别常见的爬虫标识并直接放行 让它们不参与跳转;跳转只做在入口页上 各个内容页保持稳定的语言地址;保留下拉切换的入口 并记住用户上一次做出的选择。
验收就看一点,爬虫拿到正常的状态码和完整的英文正文 收录量一周后开始回升。
