很多站点在改版或建站时顺手生成過一份 sitemap,之後就再没打開看過。時間一長,里面混進了下线頁面、跳轉地址,甚至後台入口,而新上线的栏目又没被补進去。這份清單本来是给搜尋蜘蛛指路的,结果變成了半真半假的目錄,反而增加無效抓取。
先清掉清單里不该出現的地址
打開 sitemap,逐條對照站点現状,以下几類應该直接移除:
- 已经返回 404 或 410 的舊地址,以及需要多次跳轉才落到终点的中轉 URL;
- 頁面本身設定了 noindex 的地址,指令互相矛盾只會让蜘蛛犹豫;
- 带篩選、排序、會话等參數的動態拼接地址,除非你确實希望它們被收錄;
- 登入頁、後台頁、測試目錄這類本就不该公開的入口;
- 同一内容的不同變体,只保留 canonical 指向的那個版本。
再补上漏掉的重要頁面
清理只是第一步。更常见的問题是反向的:站内已经有内容,sitemap 里却没有。按栏目從上到下走一遍,检查這几類是否完整:
- 新建的栏目頁和专题聚合頁;
- 藏在列表第二頁之後、内鏈較少的詳情頁;
- 近期發布、尚未被自然抓取到的新内容;
- 需要重点收錄的分類頁、地区頁等多入口頁面。
判断方法很朴素:打開栏目列表,随机点進去看几個頁面,再回头搜 sitemap 里有没有它們。
更新机制要跟得上内容节奏
手工维護一份大站的清單不現實,通常靠程序生成。生成逻辑里有两個细节值得盯一下。
lastmod 要真實
有些程序會把全站頁面的 lastmod 都寫成生成那一刻,這等于告诉蜘蛛“所有頁面刚刚都變了”。時間久了,這個字段就失去參考價值。只在你确實改過正文、结构或關键信息时,才更新對應頁面的時間。
拆分與分片
内容量大的站点,建议用一個 sitemap 索引文件指向若干子清單,按栏目或内容類型拆分。好處是某一類頁面出問题时影响范围可控,排查时也能快速定位是哪個栏目在拖後腿。
几個容易忽略的细节
- 清單里應只放返回 200 狀態、可正常訪問的頁面地址;
- 统一使用绝對地址,並保持协议與主机名一致,避免出現 www 與非 www 混用;
- 單個文件的 URL 條數和体积有上限,超出要分片,必要时開啟压缩;
- robots.txt 里声明的 sitemap 地址要指向實际位置,改版迁移後记得同步更新;
- 提交後過一段時間回看抓取與收錄情况,而不是提交完就当完成。
sitemap 不是一次性交付物,它更像一份需要定期核對的通讯錄:号碼換了的要删,新成員要加,格式错了要改。
建议把它纳入日常巡检周期,比如每季度或每次大改版之後過一遍。核對一遍大概花不了多少時間,但能减少蜘蛛在無效地址上的空跑,也让真正需要被抓取的内容多一個明确入口。