很多站点在 sitemap 上花了不少功夫:生成、分片、提交到站長平台,然後就等着蜘蛛上门。结果過了一两周,抓取和收錄没什么變化,于是開始怀疑這份清單到底有没有用。更准确的判断是:sitemap 是一個 URL 發現入口,不是收錄開關。它能影响蜘蛛“知不知道這個地址存在”,但决定不了“愿不愿意把它放進索引”。
sitemap 能做什么,不能做什么
sitemap 的價值在于把散落在站点各處的 URL 集中告诉搜尋引擎,尤其是那些点击深度較深、内鏈很少、甚至站内没有任何入口的頁面。它相当于一份清單,让蜘蛛知道這些地址存在。
但它改變不了頁面本身的状况。正文稀薄、和站内其他頁面高度重复的 URL,即使寫進 sitemap,被抓取之後照样可能被判定為不值得索引。所以看到提交後没動静,先別急着怪它,往下看几個更常见的原因。
寫法上的坑,比提交本身更常见
- 把不该放的地址放了進去:404、301 跳轉、被 noindex 的頁面、篩選排序參數頁。這些地址會稀释整份清單的可信度,也让蜘蛛白跑一趟。
- 同一頁面出現多個變体:http 與 https、带 www 與不带、带尾斜杠與不带,如果都寫進去,等于主動制造重复。
- lastmod 不真實:全站頁面用同一個生成時間,或者每次部署都刷成最新。時間久了,這個字段就失去了參考價值。
- 未分片或超出限制:單個文件通常建议控制在 5 萬條 URL、50MB 以内,超出後拆成索引文件。
- robots.txt 里没声明,或声明路径寫错:蜘蛛找不到這份清單,自然不會去用。
怎么確認它到底被讀了没有
比較直接的驗證方式有两個:一是观察服務器日誌里對 sitemap 文件的請求,看频率和返回狀態;二是看提交後的一段時間内,蜘蛛是否開始訪問其中從未被抓過的 URL。如果 sitemap 被反复抓取,但清單里的新 URL 一個都没被訪問,通常說明入口連結、站点结构或頁面质量上有別的問题在挡着。
發現入口不止一個
sitemap 只是补充路径,日常最稳定的發現方式仍然是頁面之間的連結。可以按這個顺序自查:
- 首頁和栏目頁是否有通往新頁面的可点击連結;
- 新頁面是否被至少一两個相關頁面内鏈指向,且锚文本可讀;
- 是否存在只有 sitemap 里才有、站内任何地方都点不到的孤立地址;
- 是否有来自站外的正常引用連結。
孤立頁面即使被 sitemap 带進了抓取队列,後續缺少内鏈支撑,也很难持續获得抓取机會。
更新节奏與提交习惯
如果站点每天更新少量内容,让 lastmod 反映真實修改時間就够了,不必每次發布都整份重提。批量上线大量頁面时,與其一次性把几千條塞進去,不如分批提交,並保證每批頁面在站内都有入口。sitemap 的更新频率和站点實际更新频率大致匹配,是比較稳的做法。
一份可以照着過一遍的清單
- 清單里只保留返回 200、可索引、規范的 URL;
- 確認 robots.txt 中的声明路径可訪問,且返回正确狀態碼;
- 检查 lastmod 是否與頁面真實改動時間一致;
- 對照日誌,看 sitemap 被抓取後其中的新 URL 是否被訪問;
- 為清單中的每個新頁面补上至少一條站内入口連結。
把這几步做完,sitemap 才回到它本来的位置:一個帮助發現 URL 的工具,而不是一份期待中的收錄保證书。