很多站点的 sitemap 是建站时生成一次,之后就没再管过。等到抓取出现异常、新页面迟迟不见动静,回头一看,这个文件里还躺着一批早就删掉的地址,而最近上线的栏目一个都没写进去。sitemap 不会直接带来排名,但它是一份告诉搜索蜘蛛「这里有哪些页面值得来看看」的清单。清单过期,等于递给对方一张旧地图。
先分清 sitemap 的两种角色
常见的说法里其实混着两样东西。一种是 XML 站点地图,写给蜘蛛读,要求准确、简洁、结构规范;另一种是给用户看的 HTML 站点地图页面,讲究可读性和内链引导。两者的写法、更新频率、检查重点都不一样,不要把 HTML 页面直接当成 XML 文件提交,也不要用 XML 文件替代站内的导航入口。
常见的几类问题
- 文件里包含大量 404、410 或者已经跳转的旧地址,蜘蛛顺着走一趟拿不到有效内容。
- 新发布的栏目和文章长期不出现,入口文件与后台已发布内容对不上。
- lastmod 全部是同一个时间,或者每次生成都统一刷成当前时间,看不出真实修改痕迹。
- 单个文件地址数量或体积超出上限,却没有做分片。
- 做了分片,但索引文件里没有把分片地址列全,等于只提交了一部分。
- robots.txt 中误屏蔽了 sitemap 所在路径,或者 sitemap 里包含被 robots 屏蔽的目录,规则互相打架。
- 只覆盖了首页和几个主要栏目,深层内容一概没有。
一套可以照着做的自查步骤
- 直接在浏览器打开 sitemap 地址,确认返回状态正常,内容是规范的 XML 结构,不是错误页或者登录页。
- 随机抽取二三十条地址,逐条访问,记录状态码、最终落点、是否能正常渲染正文。
- 把 sitemap 里的地址与自己后台已发布的内容做一次比对,重点看新增栏目有没有遗漏、下线内容有没有残留。
- 抽查 lastmod 字段,判断它反映的是内容真实修改时间,还是模板里的默认值。
- 如果做了分片,检查索引文件与各分片文件的对应关系是否完整,有没有指向已删除的分片。
- 到 robots.txt 里确认 sitemap 的声明是否存在、路径是否正确,并检查两边规则是否冲突。
关于 lastmod 的写法
如果页面内容确实没有变化,就不要更新这个字段。把整份文件的时间戳统一刷新,看着很勤快,实际上会让这个字段失去参考意义,蜘蛛也无法据此判断哪些页面更值得重新抓取。
大站的分片思路
按栏目分、按内容类型分、按发布时间分都可以,关键是索引文件能覆盖全部分片,并且分片地址本身不要在后续改版中被随意改动。分片文件每次重新生成后,索引文件也要同步更新。
别把 sitemap 当成唯一入口
sitemap 只是 URL 发现的通道之一。站内导航、栏目页、正文内链、相关推荐、蜘蛛通过已有页面爬出来的新路径,都在承担相同的职责。如果内链结构本身混乱,或者重要内容深埋在好几层之下,即使 sitemap 写得再全,实际抓取效果也可能打折。反过来,内链通畅的站点,sitemap 更多是起到补充和兜底的作用。
提醒一句:sitemap 属于提交建议,不是收录保证。蜘蛛是否会抓、什么时候抓、抓多少,取决于站点整体质量、抓取预算和内容更新情况,这些都不是一份文件能决定的。
多久检查一次比较合适
内容量大、更新频繁的站点,建议每周或每月核对一次;更新节奏慢的小站,按季度检查也够用。有几种情况要额外检查一次:刚做完网站改版、域名或目录结构调整、大批量内容上下线、robots.txt 规则改动之后。这些操作最容易让 sitemap 与真实页面状态发生错位。
把 sitemap 当成一份需要维护的运营资料,而不是一次性的技术配置,很多抓取上的困惑会少一大半。