不少站点把 sitemap 当成收錄的開關,文件一提交,就等着頁面出現在搜尋结果里。几天没有動静,就開始怀疑文件格式、路径或者提交方式出了問题。實际上,sitemap 影响的是收錄鏈路里的第一环,它不负责後面的结果。
sitemap 解决的是 URL 發現
一個頁面進入索引,大致要经過發現、抓取、處理、索引几個环节。sitemap 的作用主要在發現這一步:它把一批 URL 集中摆到搜尋引擎面前,省去爬虫顺着連結一层层找的過程。對于連結层級深、入口少的頁面,這個提示确實有用。
但被發現不等于被收錄。爬虫拿到地址之後,還要判断這個頁面值不值得抓、抓回来值不值得索引。内容單薄、和已有頁面高度重复、质量不達标的頁面,即使寫進 sitemap 並且被訪問過,也可能長期停在“已發現”的狀態。
把 sitemap 理解成一張清單,而不是一張通行證。
哪些 URL 值得寫進去
- 返回 200 的規范地址,不要寫還會 301、302 跳轉的舊地址
- 内容會持續更新、希望被反复抓取的頁面,比如文章詳情、商品詳情
- 入口較深,外鏈和内鏈都很难覆盖到的頁面
- 數量不大但重要的核心頁面,可以單獨列一份並同步 lastmod
寫進去的地址要尽量保持唯一:带不带 www、结尾有没有斜杠、參數顺序是否固定,都要和頁面里的規范地址一致。同一個頁面在 sitemap 里出現两種寫法,等于把重复問题又放大了一遍。
哪些 URL 不该放
- 404、410 以及其他打不開的地址
- 已经設定了 noindex 的頁面,两個信号互相矛盾
- 需要登入、或带临时會话參數的頁面
- 篩選、排序、分頁组合出来的參數地址,數量會迅速膨胀
- 被 robots.txt 封禁、却仍寫在 sitemap 里的地址
最後一條容易被忽略:一邊用 robots.txt 挡住目錄,一邊把里面的 URL 列進 sitemap,爬虫只會看到一堆拿不到的地址。長期這么寫,會让搜尋引擎對整份文件的准确性打折。
几個容易踩的誤区
提交之後马上就能收錄
sitemap 只是提供线索,抓取和索引各有节奏。刚上线的頁面需要時間积累信号,提交当天没有结果很正常。判断是否有效,看的是爬虫有没有按文件里的地址訪問,而不是搜尋结果條數的變化。
文件越大越好
sitemap 有單文件和單站点數量上限,超過之後需要拆分並用索引文件串联。但更實际的問题是:一份塞满低质頁面的 sitemap,反而會稀释其中真正重要 URL 的分量。宁可少而准,不要多而杂。
lastmod 随便填
lastmod 是给爬虫判断更新時間的參考。如果每次生成文件都把時間刷成目前時間,這個字段就失去了意义,時間一長會被直接忽略。只有内容确實變了,才更新對應的時間。
怎么核對它有没有起作用
- 看服務器日誌里爬虫對 sitemap 文件的請求频率,判断它是否在被定期讀取
- 對照文件里的 URL 列表和日誌里的抓取记錄,看哪些地址始终没有被打過
- 把持續被抓取却不進索引的頁面單獨拎出来,检查内容质量和重复情况
這样一圈下来,通常能分出两類問题:一類是压根没被發現,另一類是發現了但没通過质量這一關。前者可以靠 sitemap 和内鏈優化,後者只能回到頁面本身去解决。
维護 sitemap 的功夫,其實花在篩選上:把真正希望被收錄、也经得起检查的地址放進去,其余交给 robots.txt、noindex 或規范标簽處理。把它当成一份需要定期整理的清單,比当成一個提交動作更有價值。