先把当时的情况摆出来。文章页有打印按钮,地址是 /post/1?print=1,模板会去掉导航和侧栏。这批地址被外部工具抓取后收录,索引里出现 4000 条只有正文的打印版,和原文抢同一批词。

这类报错背后常见的原因有几处,逐个排除就行。打印版没有 noindex,也没有 canonical 指回原文。另一种情况是打印按钮用了普通 a 标签,蜘蛛顺着爬过去。

少数情况下是模板在打印模式下缺少 meta 区域,连描述都没有。不容易想到的是,打印模式的样式表把 head 之外的容器设成了不可见。

第一件事是确认打印版返回的内容与标记

curl -s 'https://www.example.com/post/1?print=1' | grep -c 'rel="canonical"'

给打印版加 noindex 并指回原文

<meta name="robots" content="noindex,follow">

随后打印按钮改成脚本触发

<button onclick="window.print()">打印</button>

提交移除并观察索引变化

site:www.example.com inurl:print=1

怎么算真的好了,看的是同一批现象。加上 noindex 后三周内打印版从索引里清空,原文页面的排名回升到原来的位置,摘要也恢复正常。

补一句。任何生成正文副本的功能页都要显式 noindex,打印版、RSS 版、AMP 版都是同一类隐患。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189