很多站点做了一段时间之后,栏目结构总会经历几次调整。有的栏目合并了,有的子栏目被拆到了更深的层级,还有一些旧页面实际上已经下线,只是导航里还保留着入口。真正影响搜索蜘蛛判断的,往往不是这些调整本身,而是站点地图还停留在旧版本里,导致地图展示的层级和实际页面结构对不上。
站点地图不是提交工具,而是URL发现的“目录提示”
谈到站点地图,不少人第一反应是用于提交给搜索引擎的Sitemap文件。但从搜索蜘蛛的爬行习惯看,它不会完全依赖Sitemap来决定先抓哪些页面。蜘蛛更看重页面之间的链接路径。可这并不说明Sitemap没有价值。它的价值在于,当蜘蛛的抓取队列里出现某个URL需要确认优先级时,站点地图能提供关于URL层级和重要性的辅助判断。
也就是说,Sitemap更像一份给蜘蛛的“目录提示”,而非决定页面是否收录的承诺。当栏目出现调整,比如从原来的三层结构变成两层,或者新增了一个聚合栏目,如果站点地图上的URL层级仍按照旧逻辑排列,蜘蛛往往会对页面之间的关系产生误判。具体到蜘蛛池反馈中,我们可能会发现某些栏目下的新页面迟迟没有访问记录,但其他栏目下的同类内容却能正常被爬取。
栏目调整后,地图层级与URL发现之间的常见错位
常见的错位有几种。
第一,栏目层级显示过深
站点地图为了体现树状关系,会把URL按照“首页-父栏目-子栏目-内容页”的层级全部列出来。但当实际站点已经将内容页直接提升为父栏目可访问状态时,地图却仍然标记为“内容页”,蜘蛛对URL重要性的判断就会偏低。比如一个原本放在子栏目下的文档,后来调整为首页直接展示的专题内容,如果地图没有更新,蜘蛛可能会认为它仍是一个需要经过多级跳转才能找到的普通页面。
第二,旧URL没有在地图中标注失效
栏目合并后,一部分旧URL会被301重定向到新地址,但也有一部分旧页面完全被删除。如果站点地图里还保留着已经返回404的URL,蜘蛛每访问一次就会消耗一次抓取资源。长期下来,蜘蛛会开始怀疑这个站点地图的准确性,从而降低对地图里其他URL的信任感。直观表现就是,蜘蛛池里的爬虫记录显示,蜘蛛反复尝试抓取几个已经失效的URL,而真正重要的新栏目URL却一直没有被尝试。
第三,地图没有体现栏目更新的频率差异
有些栏目每天都有新内容,有些栏目可能每周才更新一次。站点地图如果不区分这些更新频率,蜘蛛就会以均等的机会去访问每一个栏目入口,结果就是高频栏目抓取不够,低频栏目又浪费了抓取额度。从蜘蛛池的长周期记录里,能看出来不同栏目URL被发现的时间间隔,如果发现高频栏目里的新URL经常在发布后第二天才被尝试访问,很可能就是地图没有给出更新信号。
用蜘蛛池反馈反推地图层级是否合理
站点地图的调整不能只凭感觉,需要观察蜘蛛池里不同URL的首次出现时间、重复访问次数和状态码分布。具体做法可以分三步走。
- 先对蜘蛛池内一段时间内的URL访问日志做分类,把带有栏目标识的URL归入对应栏目下,统计每个栏目被访问的URL总数和平均到访间隔。
- 对照站点地图中标识的栏目层级,找出那些在蜘蛛池里访问量很少但在地图层级上标明“重要”的URL,查看它们是否在栏目导航中有足够显眼的入口。
- 重点观察栏目改版前后这段时间内,蜘蛛池里新出现的URL数量是否出现明显波动。如果站点地图已经更新,但蜘蛛池里新URL数量反而下降,说明地图与栏目结构之间仍有不匹配的地方。
地图动态调整的几个小技巧
站点地图应当尽量跟着栏目变化一起调整,不必频繁改动,但每次栏目结构变化后都需要重新梳理一次。在具体操作上,可以考虑几个原则。
- 优先保证栏目首页URL的层级清晰。地图里父栏目节点的URL要比内容页更容易被蜘蛛发现,因此栏目页URL应当保持稳定。
- 对合并栏目,不要直接删除旧栏目URL,而是保留一个完整的栏目链接,并在内部给出指向新站点的说明。如果旧链接不能保留,就及时撤销地图中的记录,让蜘蛛更快放弃对旧入口的访问。
- 利用地图的更新日期字段。每次栏目调整后,把对应栏目节点的最后更新日期改为当天,并让这个变化反映在Sitemap的lastmod里,蜘蛛会在下一次抓取时重新评估该栏目下的所有URL。
说到底,站点地图不是孤立存在的文件,它和栏目导航、内链环境一起构成了站点向搜索蜘蛛开放的“发现窗口”。当栏目改版之后,地图层级如果一直不尊重真实的页面结构,蜘蛛池里的抓取异常就会持续出现。保持地图和实际栏目同步,是URL发现得以持续进行的基本前提。
站长视角里最容易被忽略的一点:蜘蛛池反馈的价值往往不在单个URL上,而是当大量URL在发现节奏上呈现出某种一致性差异时,它就会提醒你,该检查一下地图里的层级表达是否已经落后于站点的现实。