站点地图是给搜尋蜘蛛看的指路清單,但它本身也是一份需要维護的文件。当站点規模變大,一個 sitemap 装不下所有 URL,通常會被拆成多個分片,再用一個索引文件把它們串起来。分片、索引、robots.txt 這三者的引用關系只要有一處對不上,蜘蛛就可能只讀到一部分地址,或者把同一批 URL 反复讀上几遍。
分片與索引的基本關系
先明确几個容易混淆的概念,後面自查时才知道该看哪里。
- 索引文件:本身不列具体頁面,只列出各個分片文件的地址。
- 分片文件:真正承载 URL 清單的文件,常见做法是按栏目或按内容類型拆分。
- 提交入口:搜尋引擎後台里填寫的地址,以及 robots.txt 里声明的地址,两者最好指向同一個索引文件。
如果後台提交的是索引文件,而 robots.txt 里寫的是某個分片,蜘蛛就會顺着两條不同的路走,容易出現重复讀取,也可能漏掉另一個入口下的内容。
常见的不一致情况
- 索引文件里列了分片 A、B、C,但實际服務器上 C 已经被刪除或改名,蜘蛛請求时拿到 404。
- 新栏目上线後新增了分片 D,却没有加進索引文件,導致這批 URL 只能靠内鏈慢慢被發現。
- 同一批 URL 同时出現在两個分片里,蜘蛛會認為是重复提交。
- 分片里的地址用了带參數的版本,而頁面上 canonical 指向的是無參數版本,两邊说法不同。
- 索引文件里嵌套了另一個索引文件,层級混乱,部分蜘蛛可能不繼續解析。
自查顺序
建议按從外到内的顺序检查,先確認入口,再核對内容。
- 打開搜尋引擎後台,確認提交的 sitemap 地址是索引文件還是分片文件。
- 打開 robots.txt,看里面的 Sitemap 声明是否與後台一致。
- 直接用浏览器訪問索引文件地址,確認返回 200,且内容是 XML 而不是错誤頁。
- 逐個点击索引里的分片地址,確認都能正常打開。
- 抽查一两個分片,看里面的 URL 是否能正常訪問,是否有明顯已下线的頁面。
索引文件要看什么
重点看三件事:分片數量是否與實际文件一致、每個分片的地址是否可訪問、最後修改時間是否合理。如果索引文件長期不更新,而站点内容一直在增加,就說明生成流程可能没有正常跑起来。
分片文件要看什么
看 URL 是否指向最终地址,而不是经過一次跳轉的舊地址。看是否混入了應被屏蔽的頁面,比如後台、搜尋结果頁、带會话參數的連結。還要注意單個文件的 URL 數量是否過大,影响蜘蛛讀取效率。
與 robots.txt 的配合
放在 sitemap 里的頁面,應该是你希望被收錄的頁面。如果某個目錄在 robots.txt 里被屏蔽,就不建议再出現在 sitemap 中,两處声明互相矛盾时,蜘蛛會以屏蔽規則為准,等于白提交。
同样地,被 canonical 指向別處的頁面,也不适合單獨列進 sitemap,否則會让人分不清哪個才是你想推的版本。
维護节奏
- 栏目结构變動後,同步更新分片划分,別让舊分片長期挂着失效地址。
- 定期检查索引文件與分片的對應關系,尤其是删過栏目之後。
- 观察後台的抓取統計,如果某個分片的讀取量長期為零,值得查一下是不是没被索引引用。
- 不要频繁改動 sitemap 地址,入口稳定比數量多更重要。
站点地图的作用是降低蜘蛛發現内容的成本,把它维護清楚,比單纯堆量更有意义。分片數量不必追求多,结构清晰、引用一致,才是長期可用的狀態。