做蜘蛛池的时候,大多數精力會花在入口頁上——選域名、铺連結、看日誌。相比之下,站点地图(sitemap)往往被当成顺手交一下的東西。實际上在 URL 發現這個环节,sitemap 是少數几條能被搜尋引擎直接讀取的通道之一,用好了能省下不少入口頁的铺垫成本,用错了也會给整站带来负面信号。
sitemap 在蜘蛛池里到底起什么作用
需要先摆正预期:sitemap 是URL 發現的一條线索,不是抓取或收錄的保證。搜尋引擎讀到它,只說明這些 URL 進入了待處理队列,後續會不會抓、抓几次、给多少權重,仍然取决于入口頁本身的狀態和站点整体质量。
它和入口頁互鏈的分工也不一样。互鏈解决的是“蜘蛛爬到 A 頁之後還能不能走到 B 頁”,属于路径問题;sitemap 解决的是“我主動告诉它還有哪些 URL 存在”,属于告知問题。两者是互补的,不是替代關系。入口頁铺得好,sitemap 能加快覆盖;入口頁本身有問题,sitemap 也救不回来。
提交范围:只放你希望被發現的那部分
最容易被忽略的一点是范围控制。sitemap 不是站点全量清單,尤其是蜘蛛池這種场景,很多时候你希望被發現的只是入口頁和少量過渡頁。
- 只提交入口頁與必要的承接頁。把後台、站内搜尋结果頁、带一堆參數的篩選頁塞進去,只會稀释抓取预算。
- 別提交狀態不稳定的 URL。還在調整中的頁面、返回 404 或 410 的頁面、临时跳轉的地址,先清理掉再提交。
- 多域名、多子域要分開提交。每個域名管自己的 sitemap,混在一個文件里既不好排查,也容易遗漏。
- 注意單文件條數與分片。URL 數量多的时候用 sitemap 索引文件来管理,分片不要频繁改名。
更新节奏與 lastmod
lastmod 這個字段的實际影响常被高估,但寫错會實實在在伤到信任。比較稳妥的做法是让 lastmod 反映真實的最後修改時間,而不是每次生成 sitemap 就把所有時間刷成当下——這種“全站天天更新”的信号很容易被發現並忽略。
sitemap 的更新频率也不必和入口頁改動绑死。入口頁内容没實质變化时,sitemap 保持原样即可;真正需要更新的是URL 集合發生變化的时候:新增入口頁、下线舊頁面、路径調整。
一個實用的判断标准:這次 sitemap 改動,是否改變了“有哪些 URL 需要被發現”這個問题的答案?如果答案不變,就没必要動它。
常见的几類错誤
- robots.txt 里屏蔽了 sitemap 中列出的路径,自己给自己制造矛盾。
- robots.txt 没有声明 sitemap 的位置,導致文件躺在服務器上没人讀。
- 把大量带參數、大小寫混乱、内容重复的 URL 寫進 sitemap,等于主動制造镜像頁。
- 文件编碼或压缩格式出错,解析失敗後長期無人察觉。
- 频繁全量替換整個 sitemap 内容,让抓取端反复重新解析。
- 入口頁已经停用,sitemap 里還留着大批死鏈。
和入口頁的分工怎么落地
比較省事的做法是:sitemap 负责广度,入口頁负责深度。sitemap 把入口頁清單一次性交代清楚,入口頁内部再用互鏈把蜘蛛引向真正需要被抓取的内容。两者不要在职责上互相打补丁——入口頁没铺好就靠 sitemap 猛加量,或者 sitemap 里堆一堆互鏈本来就能到達的 URL,都是在浪費资源。
观察與調整
調整的依據還是訪問日誌。可以留意几個信号:sitemap 文件本身有没有被定期讀取,讀取之後入口頁的抓取是否出現變化,新增的 URL 大概多久會出現在抓取记錄里。這些都不构成一定有效的證據,但可以帮你判断目前這套配合方式是不是在正常运轉。
如果一段時間内 sitemap 被讀取,但入口頁抓取毫無變化,問题大概率不在 sitemap,而在入口頁本身的可抓取性、内容质量或域名狀態上。這时候该回头检查入口頁,而不是繼續調整 sitemap 的寫法。