这个问题在线上不会自己消失,按现象、配置、日志三步走基本能定位。 一套代码跑了三个域名,robots.txt 里写死了主站的 Disallow 路径,子站的栏目全被误挡,收录掉了四成。

改动前把原配置备份一份,出问题能马上回滚,这一步比任何技巧都实用。

先分清是哪一类原因

  1. robots.txt 是静态文件,所有域名读到同一份内容
  2. 规则里用了绝对路径,子站的目录结构并不相同
  3. 没有按 Host 头区分输出,也没有分域部署文件

按顺序处理

1. 按域名分别请求验证是否同一份

curl -s https://a.example.com/robots.txt | md5sum

2. 在 Nginx 里按 server_name 返回不同文件

root /www/robots/$host;

3. 用 WordPress 过滤器按当前站点输出

add_filter('robots_txt', 'site_robots', 10, 2);

怎么确认已经恢复

三个域名各自返回的内容不同,子站被误挡的栏目重新出现在抓取统计里,误报的屏蔽提示消失。

容易忽略的地方

主站和子站共用一套 sitemap 也会出问题,索引文件里的域名对不上会被直接忽略,看上去提交成功其实没生效。 处理过程中建议每改一项就验证一次,避免多个变量同时变化导致判断失真。

作者 9823189