动手前先判断影响范围:是单个请求出错,还是整条链路都受影响,处理方式完全不同。 把 sitemap.xml 预压缩成 .gz 后上传,浏览器下载正常,GSC 提交却一直提示无法读取,换浏览器试也是一样。

多数情况下不用停机,但涉及重启服务时最好挑低峰期。

先分清是哪一类原因

  1. 文件是 gzip 内容但没有返回 Content-Encoding: gzip
  2. 服务器对 .xml 直接输出二进制,蜘蛛按文本解析失败
  3. 提交地址写成了 .gz 但响应头声明的类型是 text/html

按顺序处理

1. 看响应头里有没有编码声明

curl -sI https://www.example.com/sitemap.xml

2. 在 Nginx 里按扩展名补编码头

location ~ \.xml\.gz$ { add_header Content-Encoding gzip; }

3. 按实际返回内容判断是不是压缩流

curl -s https://www.example.com/sitemap.xml | head -c 20 | xxd

怎么确认已经恢复

重新抓取后 GSC 显示读取成功,解析出的 URL 数量与本地统计一致,状态不再反复。

容易忽略的地方

更省事的做法是不预压缩,交给服务器在传输层做 gzip,蜘蛛和浏览器都能正常读取,也不用维护两份文件。 线上环境和本地环境的差异往往就在版本和默认参数上,比对一下两边的实际取值能省很多时间。

作者 9823189