报错是这么冒出来的。巡检脚本输出全绿,抽查时却发现几十个栏目页只有一句「暂无内容」,状态码 200、长度也有 8KB,因为模板把导航和页脚都算进去了。
这类报错背后常见的原因有几处,逐个排除就行。判定只看状态码,没有校验正文特征。另一种情况是响应长度被模板框架撑起来,掩盖了内容为空。
不容易想到的是,空栏目在生成时没有写 noindex。
动手时先按正文容器统计实际字数
curl -s https://www.example.com/tech/ | grep -o '<article.*</article>' | sed 's/<[^>]*>//g' | wc -m
给巡检加上正文长度阈值
python -c "import re,sys;h=sys.stdin.read();print(len(re.findall(r'[\u4e00-\u9fff]',h)))"
空栏目统一输出 noindex 或返回 404
curl -s https://www.example.com/tech/ | grep -io 'noindex'
这类问题以前遇到过,但这次的触发条件和上次不一样。
别只看报错消失,验证要多做一步。加上字数校验后当天就列出 60 个空栏目,补内容或下线后索引里的薄页面减少一半。
两百字节的空页面和两千字节的完整页面在状态码上完全一样,需要内容层面的断言。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
