入口頁铺出去,只是把门打開。蜘蛛會不會走到某一扇门前,取决于它自己的調度,也取决于你有没有把路径说清楚。sitemap 和主動提交就属于這一层:它們不负责让頁面被收錄,只负责让 URL 更容易進入蜘蛛的待抓队列。把這两件事和「收錄保證」分開看,很多决策會清爽很多。
入口頁為什么還要配 sitemap
入口頁通常没有外部連結支撑,蜘蛛靠自然爬行發現它們的概率並不稳定。sitemap 的價值在于:你主動列出一批 URL,蜘蛛不用靠鏈子一层层摸過去,就能直接拿到清單。對數量多、层級浅、彼此之間連結稀疏的入口頁来说,這一步往往比再铺一层内鏈更直接。
與 robots.txt 的配合
一般建议在 robots.txt 里用 Sitemap 指令指向 sitemap 的完整地址,有多份就逐條列出。需要注意的是:如果某個目錄在 robots.txt 里被禁止抓取,sitemap 里就不要再放這個目錄下的 URL。两處規則冲突时,蜘蛛通常會以 robots.txt 的禁止為准,寫了也是白寫,還可能让整份 sitemap 的可信度下降。
sitemap 里该放什么、不该放什么
- 只放返回 200 的入口頁。301 跳轉的、404 的、需要登入的,都不要放。
- 放最终 URL,不要放會二次跳轉的中間地址,省得蜘蛛多走一步。
- lastmod 只在頁面内容真的變動时更新。每次生成都刷新時間戳,等于把這個字段作废。
- 參數重复頁、分頁很深的列表頁、内容為空的模板頁,尽量不放進清單。
數量與分片
單份 sitemap 建议控制在 5 萬條以内、未压缩体积 50MB 以内,超出的部分拆成多份,再用一個 sitemap index 匯總。分片不是越多越好,常见做法是按入口頁的類型或上线批次拆,比如一批新上的资源單獨一份,方便观察效果。压缩成 gz 通常也被接受,能省不少带宽。
主動提交與推送接口能帮上多少忙
主流搜尋引擎都提供了 sitemap 提交入口和 URL 推送接口。它們的作用是加快「被發現」的速度,但不承诺抓取,更不承诺收錄。推送之後蜘蛛没来,属于正常范围,不必立刻怀疑接口坏了。
- 推送接口通常有配額限制,每天能推的量有限,優先推新上线或刚改過的入口頁。
- 推送前先自己確認這個 URL 返回 200、能正常渲染,別把出错頁推上去。
- 同一批 URL 不要反复推。重复推送消耗配額,也不會提高優先級。
- 推送记錄留下来,和抓取日誌對照着看,比單看推送成功數有用得多。
几個常见的誤区
- 把 sitemap 当成收錄保證。它只是發現通道,索引與否還是看頁面本身。
- 在 sitemap 里塞几千條同模板頁面,蜘蛛点開几個發現内容雷同,後面的就不太上心了。
- 用提交接口狂推,以為量變能带来质變,结果配額用光,真正重要的新頁反而没推上去。
- sitemap 里的 URL 大面积 404 或跳轉,長期下来蜘蛛對這份清單的信任度會降低。
一個可执行的落地顺序
- 先確認入口頁本身狀態正常:狀態碼、渲染、内容基本完整。
- 生成 sitemap,按批次分片,只收狀態正常的最终 URL。
- 在 robots.txt 里声明 sitemap 地址,並检查與禁止規則是否冲突。
- 提交 sitemap,再對少量重点入口頁走主動推送。
- 過几天對照抓取日誌,看蜘蛛有没有按清單走,再决定是否补鏈或加量。
把 sitemap 和主動提交当成「告诉蜘蛛路在哪」,而不是「要求蜘蛛必须来」。通道修好之後,真正决定结果的還是入口頁自身的质量和數量节奏。