这个问题在线上不会自己消失,按现象、配置、日志三步走基本能定位。 一套代码跑了三个域名,robots.txt 里写死了主站的 Disallow 路径,子站的栏目全被误挡,收录掉了四成。
改动前把原配置备份一份,出问题能马上回滚,这一步比任何技巧都实用。
先分清是哪一类原因
- robots.txt 是静态文件,所有域名读到同一份内容
- 规则里用了绝对路径,子站的目录结构并不相同
- 没有按 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 也会出问题,索引文件里的域名对不上会被直接忽略,看上去提交成功其实没生效。 处理过程中建议每改一项就验证一次,避免多个变量同时变化导致判断失真。