搜尋抓取

移動優先索引下,蜘蛛抓到的到底是哪個版本的頁面

移動優先索引下,蜘蛛主要以移動 UA 抓取頁面,但不少站点的移動版和桌面版在正文、内鏈、canonical 上並不一致。本文梳理响應式、動態服務、獨立移動站三種做法的抓取差异,並给出一份用移動 UA 自查 HTML、缓存與日誌的核對清單。

搜尋抓取

移動優先索引下,蜘蛛抓到的到底是哪個版本的頁面

站点改移動端的时候,多數人只關心用戶看到什么,容易忽略一件事:蜘蛛拿到的 HTML 可能是另一個版本。移動優先索引之下,抓取與评估主要以智能手机 UA 為主,桌面版更像补充。两個版本的内容、連結一旦不一致,URL 發現、内鏈權重和索引判断都會跟着跑偏。

蜘蛛用哪個 UA 抓,就决定了它看到什么

搜尋引擎的抓取以移動 UA 為主,這一点在服務器日誌里能直接看到。如果服務器按 UA 返回不同 HTML,也就是常说的動態服務,就必须保證两種版本在核心内容上一致:标题、H1、正文主体、主要内鏈、图片的 alt 属性。

常见的事故有這么几類:

  • 移動版為了省流量只輸出正文摘要,後半段内容根本没進 HTML
  • 桌面版導航在移動版被折叠進 JS,蜘蛛第一轮抓不到深层連結
  • 移動版列表頁只渲染首屏几條,翻頁入口丢失
  • 两個版本各自的 canonical 都指向自己,互不承認

這些問题不會让頁面立刻掉出索引,但會让蜘蛛對同一份内容做出两套判断,原本一條抓取路径被拆成两條。

三種部署方式,抓取表現並不一样

响應式:同一套 HTML 加 CSS

最省心的做法。URL 唯一,HTML 唯一,蜘蛛不需要在不同版本之間做選擇。要做的主要是控制移動端首屏体积,別把正文推到很後面。

動態服務:同一 URL 按 UA 返回不同 HTML

風險最高的一種。要点有两個:一是响應头里要有 Vary: User-Agent,二是 CDN 的缓存键要包含 UA。缓存键不含 UA 时,移動版 HTML 被缓存後可能發给桌面蜘蛛,或者反過来,两邊拿到的都是错的版本。這種問题在日誌里不容易看出来,需要用不同 UA 各請求一次,對比响應体。

獨立移動站:m. 子域或單獨域名

两版之間要做對應的双向标注,同时確認移動版自身可被抓取:robots.txt 没拦、服務器可達、没被 noindex。移動版的連結结构要能回到桌面版,否則蜘蛛容易停在 m 站里,走不回主站的其他入口。

判断版本是否一致,最快的办法不是讀文档,而是用移動 UA 把响應体抓下来,和桌面版逐項對比。

抓取路径可能被拆成两條

如果两版的連結结构不同,蜘蛛實际會走两條不同的路。日誌里的表現是:同一批内容被两套 URL 或两套目錄反复抓到,重复發現和重复抓取同时增加,能用在別處的抓取预算被摊薄。

  • 移動版少了深层入口,深层頁面的發現時間明顯變長
  • 移動版把連結放在 JS 里,第一轮抓取讀不到
  • 桌面版有某個聚合頁,移動版没有,反向也存在同样情况

還有一種隐蔽情况:桌面 URL 跳到移動 URL,移動 URL 又跳回桌面 URL,形成循环。蜘蛛遇到循环跳轉通常會放弃這條鏈,结果是這個入口彻底失效。

自查清單

  1. 用移動 UA 請求几個代表性 URL,儲存完整 HTML
  2. 逐項對比 title、H1、正文長度、主要内鏈數量
  3. 確認 canonical 在两版中指向同一個首選 URL
  4. 检查 Vary 头與 CDN 缓存键是否包含 UA
  5. 看日誌里移動 UA 與桌面 UA 的抓取比例是否合理,有没有異常的重定向鏈
  6. 獨立移動站確認未被 robots.txt 或 meta 标簽屏蔽
  7. Sitemap 里只列 canonical 的那個版本,與頁面标注保持一致

服務器层面的两個细节

一是首字节時間。移動 UA 的請求如果多走了一层轉碼或重定向,TTFB 會明顯變長,蜘蛛放弃的概率上升。二是跳轉類型,桌面到移動的對應關系應当是永久的、可逆的,別用临时跳轉或 JS 跳轉来替代。

内容一致比版本數量更重要

不必强求全站只有一種部署方式,但同一份内容對蜘蛛只應该呈現一個完整版本。内容、内鏈、canonical 三者對齐之後,抓取路径才會收敛成一條,URL 發現和重訪节奏也才稳定。改完移動版之後,隔一两周回到日誌里看一眼移動 UA 的抓取占比和抓取到的 URL 形態,比在後台猜要可靠得多。