為什么 sitemap 在蜘蛛池里容易被忽略
很多蜘蛛池的搭建者把精力放在域名、IP、模板和跳轉鏈路上,sitemap 往往是最後顺手加的一個文件,甚至根本没加。實际上,蜘蛛池的入口頁通常數量多、结构相似、外鏈来源有限,如果只靠外鏈和蜘蛛自己顺着連結爬,新入口頁被發現的時間會很不稳定。sitemap 的作用不是“让蜘蛛一定来”,而是给蜘蛛一個明确、低成本的候選清單:有哪些 URL 存在、什么时候更新過、大概多久變一次。
它解决的是發現問题,不是抓取和收錄問题。把這两件事分開看,後面的配置思路就會清楚很多。
文件放哪里、要不要分片
位置與基本约束
- 單個 sitemap 文件的 URL 數量有上限(5 萬條),超過就要拆成多個文件,再用 sitemap 索引文件串起来。
- 文件建议放在站点根目錄,或通過 robots.txt 里的 Sitemap 指令声明完整地址,避免蜘蛛找不到。
- 只放返回 200 的 URL。會 301、302、404 的地址不要寫進去,否則等于主動给蜘蛛制造無效抓取。
- 编碼统一用 UTF-8,URL 中的特殊字符要轉义,避免解析失敗。
分片思路
分片不必花哨,按入口頁的批次或目錄分就行,例如按上线批次拆成 sitemap-01.xml、sitemap-02.xml。好處是某個批次出問题时,可以單獨下线對應分片,而不影响其他入口頁。分片數量不宜過多,几十個以内通常够用,太多反而增加蜘蛛的抓取负担。
sitemap 里该放哪些 URL
這是蜘蛛池里最容易寫错的部分。常见的错誤是:把入口頁、中間頁、目标頁全部塞進同一個 sitemap。目标頁通常不属于蜘蛛池的资产,把它寫進来,等于把蜘蛛往別人的站点引,同时也暴露了自己的资源關系。
比較稳妥的做法是:
- 入口頁:核心内容,全部寫入。
- 中間頁:只在确實需要被獨立發現时才寫,否則靠入口頁的内鏈即可。
- 目标頁:不寫,靠入口頁的出站連結引導。
- 參數頁、分頁、篩選頁:除非有明确價值,一律不寫,用 robots.txt 或 canonical 處理。
lastmod 與更新频率怎么填
lastmod 是 sitemap 里被滥用最多的字段。為了让蜘蛛多来,有人會把 lastmod 每次生成时都刷成当天,结果蜘蛛几次抓到的内容完全一样,之後對這個字段的信任度就會下降。
合理的做法:
- 只有頁面内容真的發生變化时才更新 lastmod。
- 用统一的时区格式,精确到日期即可,不必精确到秒。
- 蜘蛛池入口頁如果長期不改,就让 lastmod 停在那里,不要人為刷新。
- 不要填未来時間,這是最容易被识別為異常的信号之一。
主動提交入口怎么配合
sitemap 属于被動声明,主動提交是补充手段,两者配合使用會更稳:
- 站長平台的 sitemap 提交:可查看已提交、已抓取的進度,作為体检資料。
- URL 提交接口:适合新上线的少量重点入口頁,不适合每天几十萬條批量刷。
- 外鏈入口:给新入口頁做一两個真實可達的外鏈,能让蜘蛛更快找到第一批 URL。
- 日誌观察:看 sitemap 文件本身是否被抓、多久抓一次、抓完後是否顺着里面的 URL 繼續爬。
常见問题排查
sitemap 被抓了,但里面的 URL 没動静
先看文件本身是否合規:能否正常訪問、返回碼是不是 200、XML 是否合法、有没有把大量 301 或 404 寫進去。再看入口頁的响應速度和服務端並發,如果蜘蛛取完 sitemap 後訪問入口頁超时,抓取自然就停了。
sitemap 根本没被抓
检查 robots.txt 是否誤屏蔽、是否声明了 Sitemap 地址、CDN 或 WAF 是否把蜘蛛拦在文件之外。有些防護策略會把 .xml 後缀也当成敏感請求,需要在放行規則里單獨處理。
和 robots.txt 的分工
robots.txt 决定“哪些不能抓”,sitemap 建议“哪些值得抓”。一個做减法,一個做加法,两者方向相反,但目标一致:让蜘蛛把有限的時間花在有價值的地方。
蜘蛛池的入口頁數量大,如果 robots.txt 寫得很宽松,sitemap 又寫得很杂,蜘蛛會在大量低價值 URL 上消耗抓取预算。反過来,robots.txt 嚴、sitemap 精,蜘蛛的行為會集中很多。
落地建议清單
- 每個入口域名至少配一個可訪問的 sitemap,或一份 sitemap 索引。
- 只寫 200 狀態的入口頁,不寫目标頁和無效 URL。
- lastmod 如實填寫,不刷新、不填未来時間。
- 按批次分片,方便單批下线與問题隔离。
- 在 robots.txt 中声明 sitemap 地址,並確認防護策略放行该文件。
- 定期用日誌复盘 sitemap 的抓取频次和後續 URL 的抓取覆盖,作為調整依據。
sitemap 不會直接带来收錄,也不保證排名,它只是把“發現”這一步做得更确定一点。在蜘蛛池這類入口頁多、结构相似的场景里,把這件小事做扎實,往往比反复調整模板更能减少無效折腾。