站点运营

站点运营:站点地图自查,别让地图把蜘蛛带进死胡同

站点地图常被配置一次就再没人打开,可它其实是递给蜘蛛的一份新内容清单。这份清单如果混进重定向、404、noindex 页面或参数组合地址,抓取配额就会被白白消耗。本文梳理地图自查的五个步骤与一份可执行清单,帮运营者确认地图里的地址真实可用、时间戳可信、地图本身也能被正常抓取。

站点运营

站点运营:站点地图自查,别让地图把蜘蛛带进死胡同

站点地图(sitemap)经常是配置一次就再没人看过的文件。可在实际运营里,它更像是一份递给蜘蛛的“新内容清单”:哪些地址值得抓、大概什么时候更新过。清单写错,蜘蛛照着跑一圈,抓取配额就浪费在重定向、404 或者重复参数页上。

第一步:确认地图里的地址都能直接打开

把 sitemap 里的 URL 抽样或全量跑一遍,看返回状态码。下面这些地址不该出现在地图里:

  • 301、302 跳转地址,应该写跳转后的最终地址;
  • 404、410 以及已经删除的旧页面;
  • 带 noindex 的页面,地图邀请抓取、页面自己又拒绝索引,信号互相矛盾
  • 需要登录或需要 Cookie 才能访问的页面;
  • 筛选、排序、分页组合出来的参数地址,这类地址数量巨大且内容重复。

同时核对地图中的 URL 与页面自报的 canonical 是否一致。如果地图写 A、页面 canonical 指向 B,蜘蛛会优先相信页面本身,多出来的 A 基本属于无效条目。

第二步:lastmod 只写真实更新时间

lastmod 是地图里最容易被滥用的字段。有的站点为了“提醒蜘蛛”,每次生成地图都把全部地址的时间刷成当前时间。短期看不出问题,时间一长,蜘蛛会发现这个时间不可信,进而降低对整份地图的信任度。

更稳妥的做法是让 lastmod 直接取自内容系统的真实修改时间,并且只在正文实质变动时更新,模板调整、侧栏改版这类改动不必动它。格式统一用带时区的日期时间,避免出现未来时间。

第三步:注意分片与索引文件的硬限制

  • 单个 sitemap 文件不超过 50MB(未压缩),收录地址不超过 50000 条;
  • 超过后拆成多个分片,再用 sitemap 索引文件统一列出,索引文件本身也有数量上限;
  • 文件使用 UTF-8 编码,URL 中的特殊字符要正确转义;
  • 分片按内容类型或栏目划分,比按时间机械切成一堆碎片更好维护。

第四步:地图本身也要让蜘蛛拿到

在 robots.txt 里用绝对地址声明 Sitemap 位置,注意别顺手把 sitemap.xml 用 Disallow 挡住,也别让它被登录墙或 CDN 规则拦住。生成方式同样要考虑性能:几万条地址如果每次请求都实时查库拼装,蜘蛛一抓就是一次数据库压力,最好做成定时生成加静态缓存。

第五步:用日志看地图有没有起作用

地图提交之后,从服务器日志里确认几件事:蜘蛛是否真的请求了 sitemap 文件、请求频率是否稳定、地图里的地址有多少在随后一段时间内被实际抓取。如果地图天天被拉取,但里面地址的抓取率很低,问题多半不在蜘蛛,而在地图质量或站点整体结构与内链上。

一份可以照着走的检查清单

  1. 地图中每个 URL 返回 200,且与页面 canonical 一致;
  2. 只收录规范地址,不含参数组合、分页和搜索结果页;
  3. lastmod 来自真实更新时间,格式统一且没有未来时间;
  4. 分片数量与单文件大小都在限制之内,索引文件可正常访问;
  5. robots.txt 中已声明地图地址,地图未被误屏蔽;
  6. 地图生成不拖慢服务器,有缓存或定时任务;
  7. 定期从日志和站长平台核对抓取情况,发现异常条目及时清理。
站点地图是补充手段,不是替代方案。如果站内导航混乱、重要页面埋得很深,再完整的地图也救不回抓取效率。

把这几步固定成月度或季度的例行动作,地图就不会变成一份“提交之后再也没人打开”的文件。