很多站点都提交了 XML Sitemap,却忽略了一個更早就存在的頁面:HTML 站点地图。它没有任何特殊格式,就是一個普通頁面,把站内的主要連結按栏目、按類別排出来,让訪客一眼看到全站结构。對搜尋蜘蛛来说,它同样是一張可以沿着走的連結地图。
它和 XML Sitemap 的分工
两者名字接近,作用並不相同。XML Sitemap 是给抓取程序讀的文件,放在根目錄,用标簽描述 URL 與更新時間;HTML 站点地图是给用戶看的頁面,靠的是頁面里一條條真實的連結。
換句话说,XML Sitemap 解决的是“有哪些地址被列出来了”,HTML 站点地图解决的是“站内有没有一條路能走過去”。两者可以並存,不冲突,也不能互相替代。
它能补上什么
内鏈结构清晰的站点,蜘蛛顺着導航和列表頁就能覆盖大部分頁面。但在下面几種情况里,HTML 站点地图會顯得有用:
- 栏目层級較深,首頁到内頁要穿過三四层列表;
- 有些頁面只從某個活動頁或某篇舊文章鏈過去,入口很少;
- 站点刚上线,外鏈少,蜘蛛来訪次數有限;
- 頁面總量不算大,但希望蜘蛛較快看到較完整的地址集合。
把這些頁面集中在一個入口頁上,相当于给蜘蛛多開了一條路,缩短它找到這些 URL 的路径。
連結怎么放才走得通
用源碼里直接寫出的連結
連結必须是 HTML 源碼里直接出現的 a 标簽,蜘蛛拿到第一份 HTML 就能解析到。如果用脚本拼接、点击後才插入頁面,或者挂在点击事件上,抓取时可能什么都看不到。
锚文本寫頁面本身的名字
連結文字尽量用目标頁面的标题或核心词,不要清一色“点击這里”“更多”。锚文本既是给用戶的指引,也是蜘蛛判断目标頁面主题的一個參考。同一目标頁的多條連結,文字保持一致更稳妥。
分组和數量要有节制
把所有 URL 堆進一個頁面,動辄几千條,用戶看着累,蜘蛛也未必愿意全部走完。比較合适的做法是按栏目分组,每组列出该栏目下相對重要的頁面;總量大时,先列一級、二級栏目,再用分類頁或分頁往下展開。
几種让它白做的情况
- 連結加了 nofollow,蜘蛛不會顺着走;
- 整個頁面被 robots.txt 屏蔽,或頁面本身带有 noindex;
- 連結指向重定向甚至死鏈,走一步就断;
- 頁面只藏在角落,没有任何其他頁面鏈向它,蜘蛛發現不了這個入口;
- 頁面加载很慢,或者需要登入才能看到内容。
前几種多是寫法問题,检查一遍就能改掉。
判断一份 HTML 站点地图是否可用,有個简單办法:在浏览器里關掉 JavaScript,看連結是否還在、是否能点。
怎么维護
HTML 站点地图不是建好就放着。新增栏目或重要頁面时同步加進去;頁面下线、改版換了 URL 时,把舊連結替換掉,不要留着指向 404 或一長串重定向。定期点一遍里面的連結,確認都能走通。頁面上可以标注更新時間,方便用戶和蜘蛛判断這份目錄的新舊。
它解决不了的問题
HTML 站点地图只是入口之一,並不能保證蜘蛛一定抓取,也不保證頁面進入索引。它替代不了清晰的栏目導航、合理的内鏈和稳定的服務器。真正影响抓取效果的是整站结构,而不是某一個頁面。把它当作辅助工具,放在合适的位置就够了。