站点运营时间一长,URL 总量只会往上走。新内容在增加,旧内容也没有消失。很多页面早就不再更新,也不再有访问,但蜘蛛还是会按时来。抓取资源不是无限的,这部分开销会挤占新地址被发现的机会。
归档页会自己长大
常见的归档有两类:一类按时间切分,比如 /2021/03/ 这样的年月路径;一类按分类或标签聚合。它们本身有用,既给用户浏览入口,也给蜘蛛提供路径。麻烦在于,它们会随着内容增加不断产生新的 URL,而且往往是自动生成、没人管理的那一批。
一篇旧文章可能有四五条路径能到达:标签页、日期归档、相关阅读、站内搜索、Sitemap。路径多不等于发现快,反而让同一批内容被反复抓取。
旧 URL 为什么还在被访问
- Sitemap 没有清理,早期提交的地址还留在里面;
- 页脚、侧边栏、相关阅读等全站模板一直链着归档入口;
- 归档自己还有分页,第 2 页、第 3 页形成长长的链;
- 外部链接仍在,蜘蛛会顺着外链回访;
- 部分地址是参数或排序生成的重复版本。
这些因素叠加起来,一个内容量并不大的站,也可能有一大批 URL 长期占着抓取次数。
分三类处理
保留
仍有访问、仍有外部链接、对用户有浏览价值的归档,可以留下。但不必放在全站模板里,收进层级更深的入口即可,让蜘蛛按需走到。
合并
多个归档指向同一批内容时,合并成少量入口,用分页或筛选来承接。合并后记得做 301,别让旧地址直接 404。
下线
内容已删除或没有保留价值的,明确返回 404 或 410,不要用 200 返回一个空页面。空页面会继续被当成正常地址抓取,也容易让蜘蛛对这批页面的质量形成偏低判断。如果只是换了地址,用 301 指向新地址即可。
noindex 和 robots 的用法差别
归档页不想进索引,可以用 noindex, follow,保留路径但不占索引名额。要留意的是,robots.txt 屏蔽和 noindex 是两回事:被 robots 挡住的页面,蜘蛛看不到页面里的 noindex 声明,也就无法据此调整。所以想让某类页面退出索引,尽量不要用 robots 去挡。
把 URL 交给蜘蛛之前,先想清楚它值不值得占用一次抓取。
用日志验证效果
- 按目录统计抓取次数,看旧目录的占比是否下降;
- 看 404、410 的比例变化,判断清理是否生效;
- 记录新内容从发布到首次被抓的时间,观察是否缩短。
调整通常不会立刻反映出来,观察四到八周更稳妥。中间出现波动是正常的。
一份可执行清单
- 导出最近一个月的服务器日志,按目录和 URL 类型聚合;
- 列出长尾类型:日期归档、标签页、参数页、附件页、已删除内容;
- 逐类决定保留、合并还是下线;
- 清理 Sitemap,只保留需要被发现的地址,lastmod 如实填写;
- 减少全站模板中的旧链接,把入口放到更合适的位置;
- 观察四到八周,对比新 URL 的发现速度与抓取分布。
归档不是不能有,而是要有边界。知道哪些地址值得被抓,比一味增加入口更有用。