你刚改完一篇文章,第二天发现百度又收录了老版本
这事儿我干过,也救过别人——改完页面兴冲冲等流量,结果搜自己关键词,点进去是旧版,再点一次还是旧版,甚至同一个搜索结果里并排出现两个一模一样的标题,底下内容却对不上。用户一脸懵,你更懵。
不是爬虫故意使坏,是你没给它留个“路标”。搜索引擎不会主动问你:“这篇哪个才是最新版?”它只认规则、看信号。你改完了不说话,它就继续抓上周缓存的页面,时间一长,新旧混着收,权重一分散,排名直接掉温水里煮青蛙。
为什么你的网站会被重复收录?
说白了,就是搜索引擎在猜,而你没给它答案。你以为只是调了个标题、换了几段话,但在爬虫眼里,这可能等于“新建了一个页面”。
最常踩的三个坑:
- URL变了,但老地址还开着:比如把
/product/123改成/item/123,老链接没重定向,也没下线,爬虫照常访问,新旧俩页面内容雷同,它就都收了。 - 内容更新了,但
sitemap和lastmod还停在上个月:爬虫按计划来巡检,一看时间戳没变,扭头就走,根本不知道你昨晚刚重写了整页文案。 - 多个入口通向同一内容:
www.example.com和example.com都能打开首页;或者测试环境的域名(比如staging.example.com)不小心被收录了——只要内容一样,爬虫就当它是“副本”。
之前帮一个做工业设备的客户查问题,他们产品页 URL 换过四次,每次都没处理旧链接。最后百度收录了七百多条几乎一模一样的页面,光是“数控机床”这个词,前五页里有三条都是他们自己的重复页,用户点哪条都差不多,但每条权重都薄得像纸。
3个方法,让搜索引擎只认最新版本
方法一:用 canonical 标签指个“主心骨”
这是最轻量、见效最快的手段。你在新页面 <head> 里加一行:
<link rel="canonical" href="https://www.example.com/product-final" />
意思很直白:“别管其他地方,就认这个地址。”
重点来了:所有可能被收录的老页面,都得加上这行代码,且全部指向同一个新地址。
比如你有 /p1-v1、/p1-v2、/p1-new 三个版本,想推 /p1-new 为唯一权威页,那前两个页面的 canonical 必须都写成指向 /p1-new。漏掉一个,爬虫就可能从那个口子溜进去,继续收旧货。
方法二:301 重定向,干脆利落“关后门”
URL 真变了,就别跟爬虫打哑谜。直接在服务器上配 301,把老地址永久跳转到新地址。
比如访问 /product/123,自动跳去 /item/123。301 的潜台词是:“这个地址作废了,以后全去那儿。”
千万别用 302!302 是“我暂时搬个家”,爬虫会记着老地址,隔三差五还回来瞅一眼,结果新旧一起收。我就见过运营同事为了A/B测试用了 302,测完忘了切回 301,三个月后还在收一堆无效页面。
方法三:靠 sitemap.xml 和 lastmod 主动喊爬虫来
每次改完内容,打开你的 sitemap.xml 文件,找到对应条目,把 <lastmod> 时间改成当天日期,比如:
<url>
<loc>https://www.example.com/product-final</loc>
<lastmod>2024-06-12</lastmod>
</url>
同时,把已废弃的老页面从 sitemap 里删掉,或者把它们的 <priority> 调到 0.1 这种忽略级。
爬虫抓取时优先看 sitemap,时间戳一新,它大概率当天或隔天就来重抓——比干等它随机路过快得多。
注意:别天天改同一页的 lastmod。如果只是微调几个词、换张图就改时间,爬虫会觉得你在刷存在感,反而降低抓取频率。
真实案例:一个改了 5 次 URL 的教训
接手一家做实验室耗材的企业站时,他们的主力产品页 URL 已经迭代出“套娃”感:/pro/abc → /products/abc → /detail/abc → /item/abc → /catalog/abc
每次改版,技术都说“前端没问题”,但没人管 SEO 的“善后”。结果百度收录了 4 个版本,内容相似度 95% 以上,标题和 meta 描述略有不同,排名全卡在十名开外。
我们做了三件事:
- 把前四个旧 URL 全部 301 到最终版
/catalog/abc; - 在
/catalog/abc页面<head>加上自指的canonical; - 更新
sitemap.xml,删掉所有旧路径,只留/catalog/abc,<lastmod>改成当天。
不到三周,那个页面在“离心管”相关词的排名从第 12 名升到第 3,收录记录里只剩一个 URL。
这事真不靠黑科技,靠的是每次改版时,顺手把旧路封死。
如何避免改版后出现重复收录?
别等上线后再补漏。从第一篇内容发布起,就把“版本管理”当成发布流程的一部分:
- 改内容前,先去百度搜索资源平台搜一下当前 URL,确认它是否已被收录;
- 如果已被收录,优先新建一个新 URL 做新版,然后把老 URL 301 过去;
- 如果必须在原 URL 上改(比如 CMS 不支持换链接),那就改完立刻:
- 更新
sitemap.xml里的<lastmod>; - 清空 CDN 或服务器缓存,让爬虫第一时间看到新内容;
- 检查全站内链——首页、导航栏、相关文章推荐位,有没有还挂着旧 URL 的链接?有就全换成新的。
- 更新
很多重复收录,根源不在技术,而在“改完就发,发完就忘”。
今天就能执行的一个操作
打开你日常用的 百度搜索资源平台(或 Google Search Console),进入「索引」→「覆盖率」报告,筛选“最近30天提交的URL”或“最近7天被收录的页面”。
快速扫一遍列表,找有没有这样的情形:
- 多个 URL 路径不同(比如
/a、/a?ref=old、/a-v2),但标题和摘要高度相似; - 同一产品/服务,出现两三个带不同参数或后缀的页面。
一旦发现,马上做三件事:
- 选一个你真正想留的 URL(通常是结构最规范、内容最全的那个);
- 登录你的网站后台或 FTP,打开其他相似页面的 HTML 源码,在
<head>里统一加上canonical,全部指向你选的那个; - 在你的 Nginx/Apache 配置里,或通过 WordPress 插件(如 Redirection)、宝塔面板的“重定向”功能,把其他 URL 全部设为 301,跳转到那个权威地址。
做完等一周,再回去看覆盖率报告。你会明显看到重复页面数量下降,而权威页的索引状态会从“已提交未收录”慢慢变成“已收录”。整个过程,半小时够了。