站点地图解决的其實是“發現”問题
搜尋引擎抓取一個站点,通常靠三條线:外鏈带路、站内連結跳轉、以及站点地图(sitemap)。前两條依赖頁面之間真的连得起来,第三條則是运营者主動交出去的一份地址清單。它的作用不是“提交了就收錄”,而是让蜘蛛在有限的抓取時間里知道哪些地址存在、哪些是新改的,减少靠运气碰见的比例。
站点地图出問题的表現往往很安静:文件能打開,格式也没报错,但清單里塞着一堆不该出現的地址,或者该出現的頁面根本没進去。下面按顺序過一遍自查要点。
一、確認清單里放什么
判断标准很简單:這個地址是不是你希望被搜尋用戶看到的正式頁面。按這個标准過一遍,常见的几類地址應该排除在外。
- 带篩選、排序、跟踪參數的列表頁,除非该參數组合本身就是一個獨立内容頁;
- 站内搜尋结果頁,以及翻頁层級過深的分頁地址;
- 登入、註冊、個人中心、後台等需要身份才能訪問的内容;
- 測試目錄、预發布域名、临时上线的活動頁;
- 已经被刪除,訪問後返回 404 或 410 的舊地址。
反過来,容易被漏掉的通常是:新上线的栏目首頁、专题聚合頁、内容量較大的文章詳情頁,以及改版後換了地址的老頁面(前提是跳轉已经做好)。
二、分片與容量
單個站点地图文件有數量與体积上的约定上限(常见是五萬條地址、未压缩不超過 50MB),超過就要拆成多個文件,用一個索引文件把它們串起来。拆分没有固定規則,但按栏目、按内容類型、按更新频率来分更實用,因為後續排查时能一眼看出是哪個部分出的問题。
如果站点有几十萬頁面,不必强求全部塞進去。優先保證重要栏目、近期更新的内容和有獨立價值的詳情頁在清單里,比平均铺開更有意义。索引文件與各分片文件都要放在能被公開訪問的位置,別只在自己电脑上生成。
三、字段怎么填
lastmod
這是最有價值也最容易被滥用的字段。它的作用是告诉蜘蛛“這頁自上次抓取後有變化”。如果每次生成文件时把所有頁面的時間都刷成当天,這個信号很快就失去意义,蜘蛛也會逐渐不再參考它。建议只在頁面正文确實發生改動时更新,並保持统一的时区與日期格式。
changefreq 與 priority
這两個字段的參考價值有限,主流搜尋引擎已经表示基本不依赖它們。與其纠结數值,不如把精力放在地址本身是否正确、頁面是否真的可訪問上。填了不會有坏處,但不必花時間精調。
四、和 robots.txt、内鏈配合
站点地图需要在 robots.txt 里声明位置,通常寫在文件末尾,用完整的绝對地址。這里有個常见的矛盾:robots.txt 里屏蔽了某個目錄,站点地图里却還在提交该目錄下的地址。两者最好保持一致,避免蜘蛛反复看到“被禁止又被告知存在”的地址。
另外要清楚,站点地图不能替代内鏈。真正决定頁面抓取優先級和權重的還是站内連結结构:如果一個頁面只出現在站点地图里,站内没有任何入口指向它,蜘蛛對它的重视程度通常不會高。新頁面最好同时在栏目列表、相關推荐或導航里给出入口。
站点地图是补充,不是替代。先把站内連結理清楚,再考虑清單怎么交。
五、一份可执行的自查清單
- 打開站点地图地址,確認訪問正常、编碼無誤、浏览器不报解析错誤;
- 抽查若干條地址,逐條訪問,確認不是 404、不是多級跳轉、不是需要登入的頁面;
- 核對协议與主机名,是否與頁面上的 canonical 保持一致;
- 检查是否有已下架栏目、測試域名、舊活動頁的地址残留;
- 確認新上线的栏目和重要内容已经加入清單;
- 查看分片文件的數量與生成時間,判断是否還在正常更新;
- 對照服務器日誌,看蜘蛛是否真的按清單来抓,哪些地址長期没有訪問记錄;
- 在搜尋资源平台重新提交一次,观察後續抓取與收錄覆盖的變化。
寫在最後
站点地图這件事,做一次不难,难在持續维護。比較省力的做法是把它接入發布流程:内容上线或下架时,清單自動跟着變;每月抽十几分钟抽查一次,看有没有失效地址混進来。把它当成一份需要定期整理的地址台帳,而不是一次性提交的任務,長期看更划算。