事情本身不复杂,线索都在日志里。换域名时把 robots.txt 也纳入了跳转规则,老地址 302 到新域同名文件。百度抓取诊断提示规则为空,抓取量三天掉七成,Google 侧却还正常,两边表现完全不一样。
第一反应是「跳转规则没有对 robots.txt 做例外,整目录一起命中」,验证下来不成立。
真正麻烦的地方在于,几个原因的现象几乎一样。302 之后部分引擎只解析首个响应,不跟随到目标文件。也可能是新域的 robots 被 CDN 缓存成空对象,跟随过去也是空。
另外,http 和 https 各有一份文件,302 只配了其中一边。
第一件事是看不跟随跳转时的响应
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' https://old.example.com/robots.txt
跟随跳转看最终内容
curl -sL https://old.example.com/robots.txt | head -20
然后在跳转规则里给 robots 开例外
location = /robots.txt { try_files $uri =404; }
剩下的就是让
两
怎么算真的好了,看的是同一批现象。老域 robots 恢复成 200 且内容与新域一致,百度抓取诊断通过,抓取量一周内回到原来的八成。
补一句。robots.txt 是所有文件里最不该跳转的,蜘蛛读它的目的就是拿规则,多一跳就多一次失败。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
