谈到搜尋引擎蜘蛛發現URL,大多數人首先想到的是站内連結與外部連結。但XML站点地图同样是蜘蛛發現URL的正式通道,尤其對于整体規模較大或深层頁面較多的站点,一份维護得当的sitemap可以极大减少蜘蛛依赖連結遍歷的随机性,让重要内容更早被收錄。不過,很多站点的sitemap往往上线後就不再更新,既不检查报错,也不調整内容,反而成了字典里的死條目。要让站点地图真正服務于URL發現,需要從细节上持續维護。
先過滤再提交,减少無效URL干扰
sitemap不是越多越好,也不是把全站所有URL都塞進去就完成任務。蜘蛛對sitemap的抓取同样有预算概念,如果里面堆满了带跟踪參數的連結、分頁副本或已被noindex的頁面,就可能在parse阶段浪費不必要的资源,甚至让本来應当被優先處理的URL延後。每次生成sitemap时,應当先做一次過滤:去掉robots.txt中明确禁止的路径,去掉canonical指向其他頁面的地址,去掉内容完全重复的低质頁面,保留對站点有價值、可以被索引的URL集合。
有效的sitemap應当像一張精炼的清單,而不是全量备份的日誌。
lastmod不要虚标,提交节奏要匹配
lastmod字段是用来告诉蜘蛛頁面最後修改時間的,但很多站点的sitemap中该字段要么干脆不寫,要么寫成了固定的抓取日期。這样不僅容易誤導蜘蛛把已有缓存当新頁處理,也可能让蜘蛛忽略真正的更新信号。對于内容经常變化的新闻站或产品頁,最好在内容儲存时同步更新lastmod,並在预设周期内重新生成sitemap;對于内容极少變動的頁面,則不必频繁刷新這個字段。提交节奏要與網站的實际更新频率匹配,而不是机械地每周生成一次,否則蜘蛛感知不到變化,自然也不會因為sitemap而多来訪問。
留意三種常见的错誤表現
- 連結包含跳轉路径:sitemap中的URL如果带有重定向,蜘蛛可能需要多次跳轉才能到達最终頁面,既增加時間也無助于正文發現,應当直接寫最终地址。
- URL與站長後台不一致:例如www與無www混用、协议從http切到https後没有全量替換,會让蜘蛛在發現阶段就产生怀疑。建议统一站点域名並做301收敛,然後在sitemap中使用整套規范的地址。
- 大量500或404狀態:刚上线的站点偶尔出現几個错誤可以容忍,但如果sitemap中有一百個URL都返回404,說明站点在改動過程中没有做好映射,蜘蛛會認為sitemap本身的维護质量不高,逐步降低對這套通道的信任度。
用sitemap引導站内重要区域
很多站点的首頁和栏目頁通過内鏈就能被蜘蛛發現,但一些展示性頁面、专题聚合頁或只有特定入口的頁面,往往容易被遗忘。sitemap正好可以用来做這些区域的“引導員”。建议按照優先級將不同路径放進不同分区,例如核心内容單獨建一個sitemap,更新時間放在sitemap index中,然後在robots.txt里明确指向该文件。同时,确保站点地图文件本身能够被正常訪問,不可在robots.txt中愚蠢地disallow自己的sitemap路径。
最後需要說明的是,sitemap並不承诺抓取,也不保證收錄,它只是URL發現的一種加速器。與其盯着提交次數,不如去观察服務器日誌中蜘蛛實际抓取了哪些頁面、哪些区域被频繁跳過,再根據反馈回来調整sitemap里的URL组合與提交频率。這種维護习惯,往往比任何SEO技巧都更實在。