站点地图是被低估的入口
對蜘蛛来说,站点地图是最省力的 URL 發現方式:不用一层层翻導航,就能拿到一份現成的清單。但這份清單的價值完全取决于它的准确性。一份混着重定向、404、noindex 頁面、lastmod 全是同一時間戳的 sitemap,不但帮不上忙,還會让蜘蛛對整站质量打折扣。
哪些 URL 才该進 sitemap
原則只有一條:你想让搜尋引擎收錄、並且确實允许收錄的頁面。落到具体判断上:
- 返回 200,且没有 meta robots 或响應头里的 noindex;
- canonical 指向自己,而不是指向別的 URL;
- 不是登入頁、购物车、站内搜尋结果頁、带一堆參數的篩選頁;
- 移動端和 PC 端用同一個 URL,不需要重复列出;
- 分頁列表一般只列第一頁,不要把翻頁全部铺開。
反過来,重定向 URL、410、软 404、robots.txt 里 Disallow 的路径,都不该出現在站点地图里——寫進去只會制造互相矛盾的信号。
分片:別把所有 URL 塞進一個文件
單個 sitemap 文件有硬性上限(通常约 5 萬條 URL 或 50MB 未压缩体积),超過就要拆成多個文件,再用一個 sitemap 索引文件把它們串起来。分片建议按用途切,而不是按數量平均分:
- 按内容類型:文章、商品、图集、专题各一個分片,出問题时好定位;
- 按更新時間:把最近更新的内容單獨放一個分片,方便優先提交和观察;
- 索引文件只放分片地址,不要混進具体頁面 URL。
分片文件的路径要稳定,不要每次生成都換一套随机地址——蜘蛛记不住,歷史抓取資料也没法纵向對比。
lastmod 是最容易被寫坏的一栏
很多站点生成 sitemap 时,直接把 lastmod 寫成生成時間,全站几千條 URL 時間戳一模一样。後果是:搜尋引擎會降低對這一栏的信任,之後你再認真更新,它也未必当真。
比較稳妥的做法,是让 lastmod 對應内容真正發生實质變化的時間——正文改動、标题調整、结构化資料补充都算;僅僅換了广告位、調了模板样式、改了頁脚,不算。如果内容确實没變,就別為了“看起来新鲜”去改時間。
站点地图只是提交线索,不是收錄保證。提交之後,仍要靠内容质量、站内連結和服務器稳定性,来决定抓取與索引的结果。
提交與观察
把索引文件地址寫進 robots.txt 的 Sitemap 指令,同时在搜尋资源平台里手動提交。此前各平台提供的 ping 自動通知接口近年陆續調整或停用,不建议把流程押在單一自動机制上,重点還是让 sitemap 本身准确、稳定。
之後在服務器日誌里观察各分片的抓取情况:抓取频率是否正常、返回碼是否為 200、有没有 5xx 或超时。如果某個分片長期無人問津,先查它的内容质量和入口價值,而不是反复重新提交。
一份可以照着做的自查清單
- 抽查 20 條 URL,確認全部返回 200、可索引、canonical 自指;
- 检查 sitemap 中是否混入重定向、410、noindex、Disallow 路径;
- 確認 lastmod 分布合理,不存在全站同一時間戳;
- 確認單文件未超上限,索引文件只引用分片;
- 確認 robots.txt 里的 Sitemap 地址可訪問、没有多余跳轉;
- 對比日誌抓取量與實际更新量,判断分片切法要不要調整。
站点地图花不了多少時間,却是少數能被蜘蛛直接讀取的“自述文件”。把它维護干净,往往比多寫几篇内容更容易看到效果。