做 URL 發現时,常见两種做法:把連結放在入口頁的 HTML 里,或者把同一批目标 URL 塞進 sitemap。很多人觉得後者等于“提交给搜尋引擎了”,其實這两條通道在搜尋引擎眼里並不是一回事,弄清楚差別能少走弯路。
两者传递的信息不同
頁面上的連結是一張關系图。A 頁面通過某段锚文本指向 B,搜尋引擎除了知道 B 存在,還能拿到一些上下文:锚文本、連結周围的文字、連結在頁面里的位置。sitemap 本质上只是一份 URL 清單,它表達的是“這些地址存在,可以来看看”,並不說明谁指向谁。
- 頁面連結:能携带锚文本和一定的上下文信号,有助于判断目标頁面的主题方向。
- sitemap:主要声明地址存在,可能带更新時間,但不传递連結關系。
發現路径和抓取节奏也不一样
頁面連結是顺着抓取走的:搜尋蜘蛛抓到入口頁,解析出連結,再由調度决定什么时候去抓目标 URL。sitemap 通常走另一條通道,搜尋引擎定期讀取文件,把其中的 URL 放進待抓取队列。两條路最终都可能让地址進入队列,但节奏不同,也没有谁一定先谁一定後。
sitemap 是补充手段,不是替代品。它更适合用来兜底那些連結层級深、不容易被顺着爬到的地址,而不是用来省掉正常的頁面連結结构。
常见的使用誤区
- sitemap 里堆几十萬條 URL,其中還有大量 404、跳轉地址,或者被 robots.txt 屏蔽的路径,讀取成本高,可信度反而下降。
- 只提交 sitemap,頁面上不给任何連結,目标 URL 缺少上下文,即便被抓到,判断主题也更难。
- 文件没有在 robots.txt 里声明,也没有在搜尋资源平台提交,搜尋引擎不一定能及时讀到。
- sitemap 里的地址和頁面連結指向的地址寫法不一致,比如大小寫、末尾斜杠、跟踪參數不同,容易造成重复。
- 長期不更新,里面已经下线的 URL 仍被反复請求。
蜘蛛池场景下的實務建议
如果入口頁的目的就是让搜尋蜘蛛顺着連結發現目标 URL,那頁面連結仍然是主要手段,sitemap 更适合当兜底和补充:
- 入口頁保留稳定的 HTML 連結,锚文本自然描述即可,不要堆砌關鍵詞。
- 把希望被發現的 URL 同步寫進 sitemap,但只放返回 200、可正常訪問的地址。
- sitemap 按類型拆分,体积保持可控,並在 robots.txt 中声明位置。
- 定期核對 sitemap 中的地址與頁面連結是否指向同一個 URL,避免重复。
- 结合日誌看 sitemap 的讀取频率和目标 URL 的抓取情况,判断是“連結没被發現”,還是“已被發現但排在队列後面”。
怎么選擇
简單说:想让搜尋引擎理解“這個頁面和那個頁面有關系”,靠頁面連結;只想告诉搜尋引擎“這些地址存在”,用 sitemap。两者配合时,頁面連結负责關系和上下文,sitemap 负责覆盖面和兜底。無论哪種方式,都不承诺收錄或排名,抓不抓、收不收,最终由搜尋引擎自己决定。