站点地图(sitemap)是给搜索引擎的一份 URL 清单,作用是帮助发现地址,而不是提交一份收录申请。理解这一点,后面的取舍就顺了:它能让蜘蛛更快知道有这么个页面,但页面最终进不进索引,仍由内容质量、重复程度和站点整体可信度决定。
sitemap 能做什么,不能做什么
- 能做:把新页面、更新页面、层级较深的页面集中暴露给爬虫,减少靠内链慢慢被发现的时间。
- 不能做:让低质页面获得收录,也不能替代站内链接结构。一个页面如果没有任何入口链接,只在 sitemap 里出现,被发现之后往往也难以获得持续抓取。
把 sitemap 当作发现通道,不要当作收录开关。
该放进 sitemap 的 URL
- 返回 200、可正常访问的规范地址,也就是 canonical 指向自身的那一个。
- 希望被收录的新页面,以及近期确实做过内容更新的页面。
- 层级较深、靠内链不易到达的页面,例如商品详情页、文章详情页。
- 可索引的列表页与栏目页,前提是内容有独特性、没有被参数污染。
不建议放进 sitemap 的 URL
- 返回 301、302 的跳转地址,以及 404 和软 404 页面。
- 被 robots.txt 屏蔽,或页面本身带 noindex 的地址。这两种情况与提交 sitemap 是矛盾的,只会在报告里留下大量被排除的记录。
- 典型的重复地址:带排序、筛选、会话、跟踪参数的 URL,以及同一内容的不同写法。
- 分页的深层页和站内搜索结果页,除非你确实希望它们参与索引。
- 登录页、后台、购物车等没有收录价值的地址。
常见的写法问题
- lastmod 造假:每次生成文件都写当前时间,会让搜索引擎不再信任这个字段,之后真正的更新反而没被注意到。
- 单个文件的条数与体积超出限制,一般建议控制在 5 万条、未压缩 50MB 以内,超出后按需拆分并写进 sitemap 索引文件。
- sitemap 自身被 robots.txt 屏蔽,或者文件放在需要登录才能访问的目录里。
- 长期提交早已不存在的 URL 而不清理,报告里堆满错误类型。
提交之后看什么
提交只是开始,接下来要靠数据判断效果:
- 看 sitemap 报告里的已发现网址数量与错误类型,优先清理 404、跳转、被屏蔽这几类。
- 对照已发现但尚未抓取的 URL,如果长期排队,先检查抓取量是不是被大量无价值地址占用了。
- 对已抓取的页面,区分哪些进入了索引、哪些被判定为重复或已抓取未编入索引,再回到页面本身找原因。
- 结合服务器日志,确认蜘蛛是否真的按 sitemap 抓取,还是只抓了首页和几个热门栏目。
和其他手段如何配合
sitemap 解决的是告知,内链解决的是可达,两者缺一不可。一个只有 sitemap、没有内链入口的页面,即便被抓到,也很少被持续回访;反过来,内链结构良好的站点,即使 sitemap 更新慢一些,收录也不会明显受影响。至于蜘蛛池之类的做法,影响的是 URL 发现和抓取频次这一层,同样不改变页面的收录判定结果。
一份顺序清楚的检查清单
- 确认 sitemap 里的地址都返回 200,且 canonical 指向自身。
- 剔除跳转、404、noindex、被 robots 屏蔽的地址。
- 剔除参数重复和会话跟踪类地址。
- 校验 lastmod,只在内容真正改变时更新。
- 在 robots.txt 中声明 sitemap 地址,并按体量拆分文件。
- 提交后按报告清理错误,再结合日志观察抓取是否覆盖到目标页面。
把这些做完,sitemap 才算真正发挥了作用。它不会让收录快多少,但能帮你少掉很多明明提交了却没有反应的困惑。