修复后不能只看页面在浏览器里“能打开”,而要让搜索引擎爬虫再次请求时拿到正确状态。验证的核心是三步:确认修复已部署到线上,观察爬虫实际收到的 HTTP 响应,再检查该响应是否与你的修复目标一致。下面按可执行清单展开,每项说明查什么、怎么查、结果说明什么。
查什么:线上服务器返回的内容和响应头,是否已经是修复后的版本。怎么查:用命令行请求目标 URL,例如 curl -I https://example.com/page 只看响应头,再用 curl -s https://example.com/page | head 看正文开头。结果说明什么:如果状态码、Location、X-Robots-Tag 或正文仍是旧值,说明缓存、CDN 或发布流程没生效,此时观察爬虫没有意义。适用条件是你能直接访问线上环境;若只能通过后台发布,就以线上实际返回为准,不要以本地预览为准。
查什么:爬虫请求该 URL 时收到的状态码。怎么查:用 curl -I 或浏览器开发者工具的 Network 面板查看首条响应的 Status。结果说明什么:
200;若仍是 404 或 500,说明修复未覆盖该路径或服务端仍有异常。301 且 Location 指向新地址;302 是临时跳转,是否可接受取决于你的迁移意图。503 配合 Retry-After 才表达“稍后再来”;返回 200 的维护页会被当作正常内容。注意:状态码正确不等于内容正确,还要继续往下查。
查什么:修复后的 URL 是否仍被 robots.txt 或页面 meta 指令挡住。怎么查:访问 https://example.com/robots.txt,找到对应 User-agent 段落,确认目标路径没有被 Disallow;再查看页面 <meta name="robots"> 和响应头 X-Robots-Tag。结果说明什么:如果仍被禁止抓取,爬虫不会请求正文,你看到的“修复成功”只是对普通访客成立。需要区分的是,robots.txt 的抓取限制不等于可靠的索引移除:它阻止抓取,但已收录的 URL 仍可能出现在结果中,移除索引要用 noindex 等页面级手段并等待重新抓取。
查什么:返回的正文是否包含修复后的关键内容,以及 canonical 指向哪个 URL。怎么查:在 curl 输出或开发者工具中搜索 rel="canonical",并对比正文中的标题、主体文字是否为新版本。结果说明什么:若 canonical 仍指向旧地址或错误地址,搜索引擎可能把权重归到另一个 URL,你的修复在该 URL 上不生效。适用条件是页面存在多版本(带参数、带斜杠、http 与 https 并存);单版本页面同样要确认 canonical 自指且与当前 URL 一致。
查什么:搜索引擎爬虫是否真的再次请求了修复后的 URL,以及它收到的状态码。怎么查:在服务器访问日志中按爬虫 User-agent 过滤,观察该 URL 的请求时间、状态码和响应大小;若没有日志权限,可用搜索引擎提供的抓取测试类工具提交单个 URL,看它报告的响应。结果说明什么:日志里出现 200 且响应大小与修复后页面接近,说明爬虫已拿到新版本;若持续出现旧状态码,可能是缓存或抓取频率尚未更新。不同搜索引擎的抓取测试工具支持情况须分别核查,不要用一家的结果推断另一家。
同一个现象往往有多个解释。例如爬虫仍返回 404,可能是修复未部署、可能是 CDN 缓存未刷新、也可能是该爬虫请求了另一个 URL 变体。只有当你用 curl 直接请求同一 URL 得到 200,而日志中爬虫请求同一 URL 仍是 404 时,才能把原因缩小到缓存或抓取路径差异。不要在看到一次异常后就断定唯一原因。
下一步:挑一个已修复的代表性 URL,按上面顺序跑一遍 curl -I、robots 检查、canonical 检查和日志过滤,把每项的实际结果记下来;只有全部与修复目标一致,才算验证通过。