在蜘蛛池里,sitemap 经常被当成一个“提交了就完事”的动作。实际上它更像一份写给爬虫的清单:告诉对方这个域名下有哪些 URL、大概什么时候更新过。它不能替代入口页,也不能保证抓取和收录,但如果用对了,可以多给蜘蛛一条发现路径。
sitemap 在蜘蛛池里解决什么问题
蜘蛛池的常见链路是:入口页被蜘蛛发现,入口页上的链接再把蜘蛛带到目标页。sitemap 的作用是补充这条链路,尤其适合两种情况:目标页数量多、层级深,或者入口页上的链接位置不明显。它不会让蜘蛛凭空知道一个从未被引用过的域名,域名和入口页本身仍然要先被访问到。
入口页和 sitemap 的分工
- 入口页:承担被发现的任务,通常需要有可访问的 HTML、稳定的 URL 和基本的站内链接结构。
- sitemap:承担列清单的任务,把希望被发现的 URL 集中列出来,减少蜘蛛靠链接一层层爬的成本。
- 两者在同一域名下时,蜘蛛访问入口页后,有机会顺带请求 /sitemap.xml;如果入口页本身打不开,只靠 sitemap 效果会打折。
怎么写、放在哪里
- 放在站点根目录,路径用 /sitemap.xml,返回 200,Content-Type 一般是 application/xml 或 text/xml。
- 单个文件建议不超过 5 万条 URL、未压缩不超过 50MB;超过就拆成多个 sitemap,再用 sitemap index 汇总。
- URL 用绝对地址,和页面实际地址一致,不要写重定向后的地址。
- lastmod 只写真实修改时间。每次生成都刷成当前时间,参考价值会越来越低。
- 不是每个入口页都必须配 sitemap。入口页数量多时,按域名或按批次做一个汇总 sitemap 就够了。
提交与不提交的实际差别
不提交 sitemap,蜘蛛仍然可能通过入口页链接发现页面,只是发现速度取决于抓取频率和链接深度。提交到站长平台,相当于多了一个发现通道,前提是域名已经验证、sitemap 能正常访问、里面的 URL 返回 200。提交后不要每天反复提交或 ping,按平台提示或内容有实质更新时再处理即可。
几个容易踩的坑
- 把 sitemap 当成收录开关。提交只影响发现,不决定是否收录。
- sitemap 里塞了大量 404、410 或跳转地址。蜘蛛抓到这些会浪费抓取配额,也会降低对文件的信任。
- 入口页数量很多,却只提交一个巨型 sitemap,里面混着不同批次、不同状态的 URL,后期很难排查。
- 只写 sitemap,不维护入口页。蜘蛛拿到清单后仍要请求页面,页面打不开就白跑。
日常检查可以看这几项
- 随机抽几个 sitemap 里的 URL,确认返回 200 且内容不是空壳。
- 看服务器日志里有没有对 /sitemap.xml 的请求,以及请求后是否继续抓取清单里的页面。
- 检查 sitemap 文件大小和条目数,超过限制就拆分。
- 确认 sitemap 没有被 WAF、CDN 或 robots 误拦。robots 里如果屏蔽了 sitemap 路径,蜘蛛就取不到。
sitemap 是路标,不是通行证。它能让蜘蛛少走弯路,但走不走、走多深,仍然取决于入口页是否可访问、内容是否值得抓取,以及服务器是否扛得住。
把 sitemap 放进蜘蛛池的日常维护里,重点不是“提交了多少次”,而是清单是否干净、地址是否有效、和入口页的链接结构是否对得上。先把这几件事做稳,比反复研究提交频率更有意义。