很多站点把 sitemap 当成一次性的任务:建站时生成一份,提交到搜索资源平台,然后就再也没有打开过。等到发现新栏目迟迟没有被抓取,回头一看,索引文件里还停留在去年的页面列表。sitemap 本身不会带来排名,但它是站点向爬虫递交的一份目录,目录过期,发现效率就会打折扣。
先想清楚哪些 URL 该进 sitemap
索引文件不是越多越好。把不该出现的地址写进去,只会稀释重点。一般建议:
- 可以放:首页、主要栏目页、正常发布的详情页、有独立价值的聚合页。
- 不建议放:登录注册页、购物车与结算流程页、站内搜索结果页、带大量参数的筛选页、测试与预览地址、已经下线的页面。
分页列表页可以酌情处理:如果每页内容差异明显,可以保留;如果只是同一批内容的翻页,建议用 canonical 指向主列表,而不是把翻页地址全部塞进索引文件。
常见的几类问题
- 内容过期:页面已经删除或改版,sitemap 里还留着旧地址,爬虫反复访问得到 404,白白消耗抓取额度。
- 覆盖不全:只写了首页和少数栏目,新发布的详情页依赖内链被动发现,速度慢而且容易漏。
- 格式不合规:编码不是 UTF-8、标签未闭合、命名空间写错,解析失败之后整份文件等于没有提交。
- lastmod 失真:所有 URL 的更新时间都是同一天,或者干脆不写。这个字段只有在真实反映内容变化时才有参考价值。
- 文件过大:单份文件建议不超过 5 万条 URL、未压缩不超过 50MB,超出后需要拆分成多个文件,再用索引文件串起来。
一次可执行的自查流程
- 打开 sitemap 地址,确认能正常访问,返回的是 XML,而不是 404 页面或登录页。
- 从列表里随机抽 20 到 30 条 URL 逐条访问,看状态码是不是 200,内容是否还存在。
- 对比近期发布的文章,确认新页面已经出现在文件里,并且 lastmod 与发布时间对得上。
- 检查 robots.txt 有没有声明 sitemap 地址,同时确认没有规则把 sitemap 自己拦住。
- 查看服务器日志中爬虫对 sitemap 的访问记录,如果长期没有请求,说明地址可能没生效。
- 在搜索资源平台重新提交,并在之后一段时间里观察抓取情况的变化。
让它跟着内容流程走
手工维护几百条还行,上千条就容易出错。更稳妥的做法是让程序在发布、修改、删除内容时自动更新索引:新页面写入,下线的页面移除。更新时只改动变化的部分,不要每次重建整个文件,否则爬虫每次抓到的都像是「全站刚刚更新」,反而失去了参考意义。
不要把 sitemap 当成收录保证
sitemap 提供的只是线索,是否抓取、是否索引,仍由爬虫结合站点质量、结构和资源分配自行判断。
真正需要盯的是两件事:爬虫有没有来抓,抓到的页面是否被正常索引。前者看抓取日志,后者看平台里的索引状态。sitemap 是这条链路上的入口之一,把它维护干净能减少「新页面一直等不到蜘蛛」的概率,但不要指望它单独解决所有问题。