Sitemap 是站点交给蜘蛛的一份地址清單。它不能保證任何頁面被收錄,但會影响蜘蛛先看到什么、多久回来看一次,以及會不會把抓取预算花在早就失效的地址上。現實中很多站点的 Sitemap 是上线时生成一次,之後随着改版、栏目調整、内容下架慢慢和站点脱节,清單里寫的和站点上真實存在的已经不是一回事。
先確認清單和站点的真實狀態一致
自查的第一步不是看文件格式,而是比對。可以把 Sitemap 里的地址全部導出,和抓取日誌、站内實际可訪問的頁面做個對照,重点看三件事:清單里有但站点上没有的、站点上有但清單里没有的、以及两邊都有但地址寫法不同的。
- 清單里有、站点上没有:多半是内容已下架或路径改過,這些地址會让蜘蛛白跑。
- 站点上有、清單里没有:常见于新栏目、新频道,長期不补進去,蜘蛛只能靠站内連結慢慢發現。
- 地址寫法不同:http 與 https、带不带 www、结尾斜杠、大小寫,在蜘蛛看来都算不同地址。
四類高频問题
1. 寫的不是規范地址
Sitemap 里最好只出現最终要對外展示的那個地址版本,也就是 canonical 指向的那一個。如果清單里同时存在带參數、带跟踪碼、大小寫混用的變体,蜘蛛會按多個地址去抓,落地後又被規范到同一個頁面上,等于做了一轮無用功。
2. 混進了不该被抓的頁面
常见的包括:登入註冊頁、站内搜尋结果頁、深层翻頁、被 noindex 标记的頁面,以及已经返回 404 的地址。這些頁面放進 Sitemap,等于主動請蜘蛛去訪問一批它拿不到有效内容的地方。規則上也不该自相矛盾:一個地址如果在頁面里标了 noindex,就不太适合再出現在 Sitemap 里。
3. lastmod 随手寫
有些系統會在每次生成 Sitemap 时把全部地址的 lastmod 刷成目前時間,這會让蜘蛛看到“全站刚刚更新”。久了這個字段就失去參考價值,蜘蛛不再当真。更稳妥的做法是只在正文發生實质修改时更新,模板調整、样式改版不一定要動它。
4. 切分和索引文件混乱
按通行约定,單個 Sitemap 文件最好不超過 5 萬個地址、未压缩不超過 50MB。數量大的站点通常拆成多個文件,再用一個索引文件串起来。拆得随意、命名無規律,後期排查會很难受;另外记得索引文件本身也要被 robots.txt 允许訪問。
一份可执行的自查清單
- 確認 Sitemap 地址能在浏览器直接打開,返回 200,而不是重定向後的结果。
- 核對 robots.txt 是否放行了 Sitemap 文件本身,以及文件里提到的目錄。
- 抽查 20 到 50 條地址,確認都能正常打開、返回 200,且没有跳到別的地址。
- 检查是否混入 noindex、404、登入頁、搜尋结果頁。
- 统一协议、域名、结尾斜杠和大小寫寫法。
- 核對 lastmod 是否反映真實修改時間。
- 新上线的栏目,確認已经進入清單。
和 robots.txt、站内連結保持一致
Sitemap 只是發現入口之一,它和内鏈、robots.txt 三方说法一致才有效。如果 robots.txt 拦住了某個目錄,Sitemap 里却還在提交這個目錄的地址,两邊就在互相抵消。同样,如果重要頁面只出現在 Sitemap 里,站内没有任何入口指向它,蜘蛛抓到之後也很难判断它處于什么位置、值不值得多来几次。
把 Sitemap 当成一份需要维護的清單,而不是一次生成就完事的产物。它不决定收錄结果,但會决定蜘蛛在你站上的時間花得值不值。
多久看一次比較合适
结构稳定、更新量小的站点,一個季度核對一次就够;栏目经常調整、内容更新频繁的站点,可以在每次較大改版後單獨過一遍。對于使用自動生成方案的站点,建议在改版或下架内容之後手動抽查一批地址,確認自動逻辑没有把失效頁面繼續留在清單里。