很多人把 sitemap 当成一个开关:文件生成、提交、等几天,然后在报告里看不到变化,就判断「蜘蛛没读」。实际情况是,sitemap 主要解决URL 发现,它只是告诉搜索引擎这些地址存在;地址能不能进索引,仍然要过抓取、渲染、内容判断这几道关。
sitemap 能做到和做不到的事
能做到的:在页面层级很深、内链不足、站点又比较新的情况下,让蜘蛛拿到一份相对完整的地址清单,同时顺带提供更新时间的信号。做不到的:不能强制抓取,不能让内容不足的页面进索引,也不会因为放进 sitemap 就获得排名优势。
所以把它看作「投递清单」更准确。清单写得越干净,蜘蛛把时间花在有价值页面上的比例越高;清单越乱,抓取时间就越容易被消耗在无意义的地址上。
哪些 URL 放进 sitemap 是浪费位置
- 不能返回 200 的地址:301、302、404、410 都不该出现在清单里,只写最终可访问的那个 URL。
- 被 noindex 的页面:既然不想让它进索引,就不必再请蜘蛛来读。
- canonical 指向别处的页面:清单里应该写规范地址,而不是被收敛的副本。
- 参数生成的重复页:筛选、排序、跟踪参数生成的变体各写一条,只会让清单变脏。
- 内容极薄的模板页:空标签页、无结果列表、纯占位页,提交上去多半也会被排除。
文件本身的几个细节
只写规范、可索引的 URL
一个 URL 在站内只应有一个「官方版本」。www 与非 www、带尾斜杠与不带、大小写,选定一种固定下来,并让 sitemap、内链、canonical 三处保持一致。
lastmod 要真实
每次生成都刷新全部时间戳,会让更新信号失去意义。只在内容确实变化时,才改对应条目的时间。
分片与索引文件
单个文件有条数和体积上限,页面多的站点应拆成多个子 sitemap,再用索引文件串起来。分片同时也方便按栏目单独观察抓取情况。
提交之后怎么核对
- 看服务器日志里蜘蛛对 sitemap 地址的请求,确认读取频率是否正常。
- 对比清单条数与「已发现、已抓取」的数量,差距过大说明部分地址连抓取队列都没排上。
- 抽查一批 URL,核对状态码、canonical、noindex 是否与预期一致。
- 找出被反复抓取却始终没进索引的地址,那通常是内容质量或重复问题,而不是 sitemap 问题。
把 sitemap 当成收录保证,容易忽略真正的瓶颈:内容价值和重复度。它更像一份减少蜘蛛迷路的路线图,而不是入场券。
几个常见误区
- 提交后马上查收录,结论下得太早。抓取和索引都有排队过程。
- 为了数字好看,把全站 URL 不分状态全塞进去,反而稀释了重点页面。
- 站内已有多个入口的页面仍反复提交,收益有限;重点应放在缺少内链的深层页面。
- 页面删掉了却不更新清单,蜘蛛按旧清单反复访问,拿到一堆 404。
说到底,sitemap 是给蜘蛛的地址清单。写得准、写得干净、与站内链接和 canonical 保持一致,它的作用才真正发挥出来;至于是否收录,最终还是页面本身说了算。