常见問题

入口頁只對移動端 UA 輸出連結,桌面搜尋蜘蛛抓取时還能發現吗?

有些入口頁會按 User-Agent 判断设备,只在移動端版本里放連結。這種差异會不會让搜尋蜘蛛漏掉目标 URL,取决于搜尋引擎實际用哪個蜘蛛抓取你這份 HTML。本文讲清移動優先索引的机制、PC 與移動蜘蛛的差別、自查顺序,以及更稳妥的連結輸出方式。

常见問题

入口頁只對移動端 UA 輸出連結,桌面搜尋蜘蛛抓取时還能發現吗?

問题是怎么出現的

做入口頁时,有些人會用 User-Agent 或屏幕宽度做判断:手机訪客看到的是带連結的移動版頁面,电脑訪客、以及桌面 UA 的搜尋蜘蛛,拿到的却是一個几乎没有連結的简化版。只要這種差异覆盖到搜尋蜘蛛,目标 URL 能不能被發現就變成了一個需要單獨確認的問题。

搜尋蜘蛛用的是什么“身份”

不同搜尋引擎不一样,不能一概而论。

  • Google:抓取與索引主要走智能手机版 Googlebot,也就是移動優先索引的思路。如果連結只存在于移動版 HTML 里,通常仍有机會被解析到。
  • 百度:PC 蜘蛛與移動蜘蛛並存,两種身份都會抓取。如果只在移動 UA 下輸出連結,PC 蜘蛛訪問时拿到的就是没有連結的那一版。
  • 其他引擎與第三方抓取工具:UA 标识和渲染能力各不相同,不能假设它們會主動去取“另一個版本”。

所以答案不是“能”或“不能”,而是要看抓你這一份頁面的那個蜘蛛,收到的是哪一版 HTML。

判断依據只有一份 HTML

搜尋蜘蛛不會去猜你還准备了什么版本,它只解析自己收到的那份响應。連結在不在里面,直接决定目标 URL 會不會進入待抓取队列。

  • 服務端按 UA 輸出不同 HTML:桌面 UA 請求时連結不在源碼里,桌面蜘蛛自然看不到。
  • 用 JS 按设备宽度插入連結:依赖渲染能力,不同引擎的渲染时机和覆盖范围不同,属于相對薄弱的一环。
  • 用 CSS 隐藏或折叠:連結仍然寫在 HTML 里,和上面两種情况不是一回事。

内容一致性也要考虑

同一個 URL 對蜘蛛和普通用戶返回明顯不同的内容,容易被判定為伪装式返回(cloaking)。即便技術上让蜘蛛拿到了带連結的版本,這種做法本身也带来額外風險,問题不只是“抓不抓得到”。

自查顺序

  1. 用 curl 分別带上移動 UA、桌面 UA、以及目标蜘蛛 UA 請求入口頁,對比返回源碼里的連結數量是否一致。
  2. 對比的是源碼而不是浏览器渲染後的 DOM,很多差异只在源碼层面看得出来。
  3. 在搜尋引擎提供的抓取工具里用對應蜘蛛模拟一次,看它解析出的連結清單。
  4. 查服務器日誌,確認實际来訪的蜘蛛 UA、它請求到的是哪一版頁面,以及目标 URL 後續有没有抓取记錄。

一個容易忽略的细节

有些站点移動版和桌面版用的是不同 URL(例如 m 開头或不同目錄),這时蜘蛛發現的連結可能指向移動版地址。如果移動版又跳回桌面版,鏈路會變長,發現效率也會下降,最好在自查时把跳轉鏈路一起看清楚。

更稳妥的做法

  • 服務端渲染,PC 與移動返回同一份包含連結的 HTML,布局差异交给 CSS 做响應式處理,而不是按 UA 增删連結。
  • 确實需要做设备适配时,至少保證連結在两種版本里都存在,差异只体現在样式和排版上。
  • 關键 URL 不要只挂在一條路径上:sitemap、站内導航、其他頁面的常規連結可以同时使用,降低單点失效带来的影响。
判断标准很简單:蜘蛛收到的那份 HTML 里有没有這個連結,和它自称是什么设备、屏幕多宽没有關系。