现场是这样的。验证文件放在根目录后平台一直提示验证失败,浏览器访问返回 200,文件内容也没错,同一份文件在百度那边一次就过。
中间走过弯路,把「文件里多了编辑器保存的 BOM 头」当成主因,改完现象没变。
这类报错背后常见的原因有几处,逐个排除就行。CDN 把验证文件缓存成 404 的旧结果,之后一直不回源;伪静态规则把 .html 重写到首页,校验串对不上;站点同时开了 www 和裸域,验证的是另一个主机名。
第一件事是确认文件真实返回的状态与类型
curl -sI https://www.example.com/sogou_verify.html
再往下绕过 CDN 直接打源站对比
curl -s -H 'Host: www.example.com' http://127.0.0.1/sogou_verify.html
随后按 URL 清掉边缘缓存
curl -X PURGE https://www.example.com/sogou_verify.html
两个主机名各验一次
curl -sI https://example.com/sogou_verify.html
怎么算真的好了,看的是同一批现象。清理缓存后两个主机名都返回 200 和原始内容,平台验证在几分钟内通过。
容易忽略的是,验证文件属于静态资源,一旦被缓存成 404 就会一直失败,改完要按 URL 清缓存而不是整站刷新。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
