搭蜘蛛池时,很多人把精力全放在入口頁本身,却忘了告诉蜘蛛“這些頁面在哪里”。sitemap 做的就是這件事:它不创造抓取,只是把已经存在的 URL 列出来,减少蜘蛛發現新頁面的摩擦。理解它的邊界,比盲目提交更重要。
一、sitemap 能做什么,不能做什么
它负责“告知”:把一份 URL 清單放在蜘蛛能讀到的地方,蜘蛛抓取後可以按图索骥。它不负责“保證”:提交了不等于抓取,抓取了也不等于收錄。入口頁质量差、站点整体抓取配額有限、服務器响應慢,清單再全也没用。
所以在蜘蛛池里,sitemap 更适合当辅助手段,和入口頁内鏈、外部連結一起构成發現路径,而不是唯一入口。
二、入口頁數量不多:一個文件就够
- 文件放站点根目錄,命名為 sitemap.xml;
- URL 用完整绝對地址,带上协议和域名;
- 單個文件不超過 5 萬條 URL,压缩前体积不超過 50MB;
- 只放希望被抓取的頁面,404 頁、noindex 頁、跳轉中間頁不要寫進去;
- 编碼用 UTF-8,XML 格式要能通過校驗。
三、入口頁數量多:用索引文件分片
当入口頁有几百上千個时,建议拆成多個子 sitemap,再用一個 sitemap index 把它們串起来。蜘蛛先讀索引,再按需讀子文件,單個文件出错也不會拖垮整份清單。
分片维度怎么切
可以按上线批次切,也可以按域名、按栏目切。批次切分比較直观:新上线一批入口頁就新增一個子文件,老文件冻结不動,方便回头核對哪一批提交後被抓過。
四、lastmod 別乱填
lastmod 表示頁面内容最後修改時間,用 W3C 日期時間格式。有些站長為了“顯得活跃”,每次更新 sitemap 就把所有 lastmod 刷成当天。短期看像是提醒了蜘蛛,長期會让這個字段失去參考價值——蜘蛛發現每次都是新時間、内容却没變,就會降低對它的信任。入口頁确實改過再更新,没改就別動。
五、主動提交的几種方式
- 在 robots.txt 里寫 Sitemap 指令,声明文件位置;
- 通過搜尋引擎站長平台提交 sitemap 地址;
- 部分搜尋引擎提供 ping 接口,但各平台策略變動频繁,別把它当主要手段;
- 保持文件可公開訪問,不要加登入驗證、防盗鏈或 IP 白名單限制。
這几件事成本都很低,可以都做,但別指望做完就有效果。
六、几個常见错誤
- sitemap 里混入 noindex 頁面,两邊信号互相打架;
- 把目标頁也塞進入口頁的清單,让蜘蛛誤以為它們是同一批内容;
- 文件返回 200,内容却是一個 HTML 报错頁;
- 被 CDN 缓存了舊版本,更新後蜘蛛讀到的還是老清單;
- 子文件被 robots.txt 屏蔽,索引文件却還在引用它。
七、怎么判断 sitemap 有没有被讀
看服務器日誌里 sitemap 文件的請求次數和来源 UA,比看後台的提交狀態更實在。如果長期没有任何蜘蛛請求,先查訪問權限和 robots 規則;如果請求频繁但入口頁本身没被抓,問题多半不在 sitemap,而在入口頁质量、响應速度或站点的整体抓取配額。
把 sitemap 当成一張地图,它能让蜘蛛少走弯路,但走不走、走多遠,最终還是取决于入口頁本身值不值得抓。