做蜘蛛池入口頁时,经常有人問:到底要不要顺手配一個 sitemap?把目标 URL 寫進 sitemap,是不是比放在頁面連結里更容易被搜尋蜘蛛看到?這個問题没有固定答案,但两種方式的定位差別很大,先把角色分清楚,就不會白花力气。
sitemap 和頁面内連結,解决的不是同一件事
sitemap 的定位是主動申报:你在一份文件里列出一批 URL,告诉搜尋引擎“我這里有這些地址”。頁面内連結的定位是顺着路径爬:搜尋蜘蛛抓到入口頁之後,沿着連結自然走到下一個 URL。
從鏈路上看,頁面連結有個前提——入口頁本身要先被抓到,連結才有机會被看见。而 sitemap 可以被獨立讀取,所以在抓取记錄很少的新域名上,它有机會更早進入對方的待處理队列。反過来,如果入口頁已经有稳定的抓取频次,頁面連結的發現速度通常不會比 sitemap 差多少。
sitemap 不等于抓取,更不等于收錄
提交 sitemap 只是交上去一批候選地址,後面還有好几道關:
- 文件里的 URL 是否真實可訪問,返回 200;
- 有没有被 robots.txt 屏蔽,或者頁面本身寫了 noindex;
- 能不能被正常解析,比如压缩格式、编碼是否規范;
- 最终會不會被抓,還要看對方的抓取調度。
另外,lastmod 造假是有代價的。如果你每次都把時間改成“刚刚更新”,但頁面内容其實没動,這類信号的可信度會被慢慢消耗,後面真更新了反而不好使。
蜘蛛池场景下的几個實操建议
- 入口頁里的目标連結照常放,不要為了 sitemap 把頁面做成一個空壳,頁面連結同时承担着引導後續爬取的作用。
- sitemap 只寫真實存在、能正常打開的 URL,別把失效地址、带一堆無用參數的歷史地址一股脑塞進去。
- 單個 sitemap 文件有數量和体积上限(常见是 5 萬條、未压缩 50MB),超出後用索引文件拆分,具体以各搜尋引擎官方文档為准。
- 把 sitemap 地址寫進 robots.txt,方便對方找到位置。
- 核對 sitemap 里的 URL 與頁面實际 canonical 是否一致,避免自己给自己打架。
哪些情况更值得配 sitemap
- 目标 URL 藏在入口頁較深层級,靠連結不容易爬到;
- 入口頁的連結是 JS 渲染出来的,纯 HTML 里看不到;
- 一次性新增了大量 URL,希望成批申报;
- 站点内鏈稀疏、结构比較乱。
反過来说,如果入口頁内鏈结构清晰、抓取稳定,sitemap 更像是一個补充渠道,不必指望它带来质變。
怎么判断到底是哪個在起作用
與其猜,不如看日誌:
- 看搜尋蜘蛛是顺着頁面連結抓的(請求的 Referer 是入口頁),還是直接按 sitemap 里的地址抓的;
- 在 Search Console 一類的後台看 sitemap 报告的“已發現”“已抓取”數量變化;
- 做個小對比:往 sitemap 里加一批新 URL,记錄它們在日誌里第一次出現的時間,和只靠頁面連結的那批比一比。
几個常见的坑
- sitemap 里放的是 noindex 頁面,等于自己声明了不想被收錄;
- sitemap 里包含 robots.txt 已屏蔽的路径,白提交;
- sitemap 地址本身長期 404 或 5xx,等于渠道断掉;
- 把 sitemap 当成“提交了就收錄”的開關,這中間還隔着抓取和篩選。
sitemap 解决的是“告诉別人這里有哪些 URL”,頁面連結解决的是“让爬虫顺着路径走過来”。两件事都做,但別指望一個替代另一個,也別承诺任何收錄结果。