页面内容已经改过,过了一两周在搜索结果里看到的还是旧标题、旧价格、旧联系方式。这种情况不一定是“没收录”,更常见的是收录已经存在,只是索引里保存的那份内容还没被替换。要排查的是三件事:页面对外返回的是不是新版本、爬虫有没有再来抓一次、索引有没有把新内容写进去。顺序反过来查,容易白忙。
一、先确认服务器返回的确实是新版本
很多“索引没更新”其实页面本身就没更新。后台点了发布,但前台读的是缓存或静态文件,用户看到的是新页面还是旧页面,取决于你从哪里看。
- 用无痕窗口打开目标 URL,查看网页源代码而不只看渲染后的效果,确认正文文本是否为新内容。
- 在 URL 后面加一个随机参数再访问(例如 ?v=20240601 这类临时值),如果带参数是新内容、不带参数是旧内容,问题基本落在缓存层。
- 检查 CDN 命中状态与响应头里的缓存时间,确认缓存是否按预期过期或被主动刷新。
- 确认发布流程里没有“多个版本并存”:模板缓存、静态化文件、多机房不同步,都会让不同节点返回不同内容。
这一步没排干净,后面所有的抓取和索引分析都建立在错误的前提上。
二、爬虫有没有再来抓过这个 URL
打开服务器访问日志,按 URL 过滤,看最近一次爬虫访问的时间。如果更新时间点之后完全没有新的抓取记录,那问题在抓取侧;如果有抓取记录且返回 200,那才轮到讨论索引刷新。
以下几类情况会明显拖慢重新抓取:
- 页面本身抓取频率低,尤其是深层页面、更新频率低的老页面。
- 服务器响应慢或间歇性 5xx,爬虫会主动降低对该目录的访问节奏。
- URL 带会话参数或不稳定参数,每次被抓到的都是“新地址”,历史权重无法累积。
- 站点整体可抓取量被大量低价值 URL 占据,真正需要更新的页面排队靠后。
这一步的结论很重要:没有抓取和抓取了但没换索引,后续动作完全不同。
三、更新信号有没有发对
sitemap 里的 lastmod
sitemap 中的 lastmod 应当反映内容实质变化的时间。长期不更新、或者每次全量刷新成当前时间,都会让这个字段失去参考价值。只改真正变过的 URL,比整份文件重写更有意义。
页面上的可见时间
正文里如果有“更新于”这类明确时间,并且与内容变化一致,比页脚写死一个版权年份要清晰。结构化数据中的日期字段也应与实际修改时间保持一致,不要出现页面写 A 时间、标记里写 B 时间的情况。
内链与入口
从首页、栏目页或其他常被抓取的页面,给被更新的 URL 一个正常的内链入口,比等爬虫自己想起来更实际。入口尽量用稳定地址,不要指向带一堆参数的版本。
四、改动幅度会影响判断结果
只改了页脚年份、调了几个词序,多数情况下被判定为“未发生实质变化”,索引保留旧版本并不奇怪。标题、主体段落、价格、库存、联系方式这类核心信息发生变化,被重新处理的概率更高。
如果改动确实重要,可以顺带调整标题、首屏内容和内链锚文本,让页面整体呈现出“这是一次真实更新”的状态,而不是只改一个字。
五、URL 本身没有漂移
同一篇内容如果同时存在大小写不同、末尾有无斜杠、http 与 https、带参数与不带参数等多个地址,更新很可能只发生在其中一个版本上,而索引里保留的是另一个。核对时确认:
- 页面的规范地址唯一且自指向。
- 站内链接统一使用同一个版本,不要混用。
- 旧路径通过跳转指向新路径,而不是让两个地址都返回 200。
六、观察与收尾
把上面几步过完之后,剩下的就是观察。重新抓取和索引刷新都需要时间,不同页面差别很大,更新频繁、入口多的页面通常更快。可以记录每次修改时间、日志里的抓取时间和搜索结果中显示的内容版本,用两三次对比就能摸清自己站点的节奏。
需要说明的是,以上都是提升可发现性和可判断性的做法,并不能保证某个页面一定被重新抓取或索引一定刷新。搜索引擎是否重新处理、何时处理,最终取决于其自身策略。把页面、信号和入口做扎实,是站点侧能控制的部分。