站点运营

站点运营:Sitemap 自查,别让蜘蛛拿到的地址清单自相矛盾

很多站点的 Sitemap 是建站时生成一次就再没维护过,清单和站点现状慢慢脱节。本文从地址规范性、混入无效页面、lastmod 写法、文件切分四个角度,给出一份可执行的 Sitemap 自查清单,并说明它需要和 robots.txt、站内链接保持说法一致。

站点运营

站点运营:Sitemap 自查,别让蜘蛛拿到的地址清单自相矛盾

Sitemap 是站点交给蜘蛛的一份地址清单。它不能保证任何页面被收录,但会影响蜘蛛先看到什么、多久回来看一次,以及会不会把抓取预算花在早就失效的地址上。现实中很多站点的 Sitemap 是上线时生成一次,之后随着改版、栏目调整、内容下架慢慢和站点脱节,清单里写的和站点上真实存在的已经不是一回事。

先确认清单和站点的真实状态一致

自查的第一步不是看文件格式,而是比对。可以把 Sitemap 里的地址全部导出,和抓取日志、站内实际可访问的页面做个对照,重点看三件事:清单里有但站点上没有的、站点上有但清单里没有的、以及两边都有但地址写法不同的。

  • 清单里有、站点上没有:多半是内容已下架或路径改过,这些地址会让蜘蛛白跑。
  • 站点上有、清单里没有:常见于新栏目、新频道,长期不补进去,蜘蛛只能靠站内链接慢慢发现。
  • 地址写法不同:http 与 https、带不带 www、结尾斜杠、大小写,在蜘蛛看来都算不同地址。

四类高频问题

1. 写的不是规范地址

Sitemap 里最好只出现最终要对外展示的那个地址版本,也就是 canonical 指向的那一个。如果清单里同时存在带参数、带跟踪码、大小写混用的变体,蜘蛛会按多个地址去抓,落地后又被规范到同一个页面上,等于做了一轮无用功。

2. 混进了不该被抓的页面

常见的包括:登录注册页、站内搜索结果页、深层翻页、被 noindex 标记的页面,以及已经返回 404 的地址。这些页面放进 Sitemap,等于主动请蜘蛛去访问一批它拿不到有效内容的地方。规则上也不该自相矛盾:一个地址如果在页面里标了 noindex,就不太适合再出现在 Sitemap 里。

3. lastmod 随手写

有些系统会在每次生成 Sitemap 时把全部地址的 lastmod 刷成当前时间,这会让蜘蛛看到“全站刚刚更新”。久了这个字段就失去参考价值,蜘蛛不再当真。更稳妥的做法是只在正文发生实质修改时更新,模板调整、样式改版不一定要动它。

4. 切分和索引文件混乱

按通行约定,单个 Sitemap 文件最好不超过 5 万个地址、未压缩不超过 50MB。数量大的站点通常拆成多个文件,再用一个索引文件串起来。拆得随意、命名无规律,后期排查会很难受;另外记得索引文件本身也要被 robots.txt 允许访问。

一份可执行的自查清单

  1. 确认 Sitemap 地址能在浏览器直接打开,返回 200,而不是重定向后的结果。
  2. 核对 robots.txt 是否放行了 Sitemap 文件本身,以及文件里提到的目录。
  3. 抽查 20 到 50 条地址,确认都能正常打开、返回 200,且没有跳到别的地址。
  4. 检查是否混入 noindex、404、登录页、搜索结果页。
  5. 统一协议、域名、结尾斜杠和大小写写法。
  6. 核对 lastmod 是否反映真实修改时间。
  7. 新上线的栏目,确认已经进入清单。

和 robots.txt、站内链接保持一致

Sitemap 只是发现入口之一,它和内链、robots.txt 三方说法一致才有效。如果 robots.txt 拦住了某个目录,Sitemap 里却还在提交这个目录的地址,两边就在互相抵消。同样,如果重要页面只出现在 Sitemap 里,站内没有任何入口指向它,蜘蛛抓到之后也很难判断它处于什么位置、值不值得多来几次。

把 Sitemap 当成一份需要维护的清单,而不是一次生成就完事的产物。它不决定收录结果,但会决定蜘蛛在你站上的时间花得值不值。

多久看一次比较合适

结构稳定、更新量小的站点,一个季度核对一次就够;栏目经常调整、内容更新频繁的站点,可以在每次较大改版后单独过一遍。对于使用自动生成方案的站点,建议在改版或下架内容之后手动抽查一批地址,确认自动逻辑没有把失效页面继续留在清单里。