网站收录

线上页面已经改了,索引里还是旧内容:先分清没重抓还是没更新索引

线上页面已经更新,搜索结果里却还是旧标题、旧正文,这种情况常被误判成没收录。本文按抓取时间、返回内容版本、索引更新时间三层依次核对,并列出缓存 304、JS 渲染、多版本页面等容易混淆的情况,帮助你把“没重抓”和“没更新索引”分开处理。

网站收录

线上页面已经改了,索引里还是旧内容:先分清没重抓还是没更新索引

线上正文已经改好,搜索结果的标题和摘要却还是几个月前的样子,或者还能搜到旧的价格、旧的库存。这种情况很容易被当成“没收录”,于是反复提交、反复改标题,反而把问题搞混。更实际的顺序是先确认:蜘蛛到底有没有抓到新版本,抓到之后索引有没有跟着更新。

先分清三种“旧”

看起来都是内容旧,但成因完全不同,处理方式也不一样。

  • 没抓到新版:蜘蛛上次来还是改动之前,页面根本没被重新抓取。
  • 抓到了旧内容:缓存层、CDN 或渲染逻辑没更新,蜘蛛拿到的 HTML 本身就是旧的。
  • 抓到了新版,索引还没换:抓取时间已经是新的,但索引与展示层的更新有自己的节奏。

这三种情况在日志和索引状态里的表现不一样,先归类,再动手。

第一步:查最近一次抓取的时间与响应

在服务器日志或日志类工具里,按目标 URL 过滤,看最近一次搜索蜘蛛请求的几项信息:

  • 请求时间:判断是改动前还是改动后。
  • 状态码:200、304、301、5xx 对应的结论完全不同。
  • 响应体大小与 ETag、Last-Modified:如果长期返回 304,说明服务端一直告诉蜘蛛“没变”。

常见坑是只改了模板或前端组件,正文内容指纹没变,缓存层照旧返回 304,蜘蛛自然认为页面没有更新。这时要检查的是缓存策略,而不是继续发提交。

第二步:确认改动落在哪一版 HTML 里

如果页面正文由 JavaScript 渲染,或者内容来自接口,那么“浏览器里看着是新的”不代表蜘蛛看到的是新的。核对时可以对比两件事:

  1. 直接取源码、不执行脚本时,正文是否已经出现在 HTML 里。
  2. 渲染完成后的 DOM 与源码的差异有多大。

若关键内容只出现在渲染之后,就要考虑服务端渲染、预渲染,或者把核心信息放进初始 HTML。

第三步:抓取时间不等于索引时间

抓取成功之后,页面还要经过解析、去重、质量判断,才可能进入索引并更新展示。抓取时间是新的,索引时间仍可能是旧的,这属于正常的异步过程。反过来,如果抓取时间一直没有更新,那就不是索引层的问题,回到第一步继续查。

收录和索引更新没有“提交即生效”这回事,工具给出的都只是触发信号,不是承诺。

几种容易被误判的情况

  • 标题或摘要被重新生成:展示层会按查询词组织摘要,不一定照搬你写的描述。
  • 移动版与桌面版内容差异大:看到的“旧”可能来自另一个版本。
  • 多语言、多地区版本混看:各语言页独立存在,别把 A 语言页的结果当成 B 语言页没更新。
  • 只用一个查询词核对:换个更贴近正文的查询词再看,结论可能不同。

想推动更新,可以做这几件事

  • 让内容有实质变化,而不是只调格式、改几个标点。
  • sitemap 里的 lastmod 要如实反映正文变化时间,不要每次生成都刷成当前时间。
  • 从抓取频次较高的页面加一条内链指向它,帮助重新发现。
  • 确认 CDN 与页面缓存已刷新,避免继续返回 304 或旧缓存。
  • 改动后留出观察窗口,别在同一天反复提交、反复改标题。

把顺序固定下来:先看抓取,再看返回内容,最后才谈索引更新。这样每次遇到“索引里还是旧内容”,都能先排除掉一大半无关原因。