站点运营

站点运营:移動端與桌面端内容自查,別让同一地址给出两套頁面

同一地址在手机和电脑上呈現的内容不同很常见,但處理方式不同,對抓取的影响也不同。本文梳理獨立移動域、响應式隐藏、按 UA 動態分流三種做法各自容易踩的坑,並给出一份可對照执行的自查清單,帮你確認蜘蛛拿到的是不是你想被看到的那一版。

站点运营

站点运营:移動端與桌面端内容自查,別让同一地址给出两套頁面

為什么同一地址會出現两套頁面

移動優先索引普及之後,抓取程序主要以移動端 UA 来讀取和评估頁面。如果你的站点在手机和电脑上返回的 HTML 差別很大,那么真正被用来判断頁面價值的那一版,往往是内容更少、内鏈更少、甚至正文残缺的那一版。這不是危言耸听,不少“桌面端看着挺完整”的頁面,在移動 UA 下确實只剩一個标题加几張图。

問题通常不在于“做了移動适配”,而在于适配方式留下的缝隙。

三種常见做法與各自的坑

獨立移動域或 m 子域

把移動流量導向 m 開头的子域是最老的做法,至今仍有站点在用。方案本身可行,但依赖几個前提:

  • 桌面頁與移動頁要互相标注對應關系,让抓取程序知道两者是同一内容的不同版本。
  • 移動頁上的 canonical 要么指向自身,要么指向桌面頁,两邊不能互相矛盾。
  • 桌面 UA 訪問时的跳轉要稳定,不要因為判断條件寫得含糊,让蜘蛛在两邊来回彈。

實践中常见的失誤是:只给用戶做了跳轉,没有补對應标注,结果两套地址各自积累信号,谁也没能集中起来。

响應式布局里隐藏内容

用 CSS 把一部分内容在窄屏下藏起来,是很多响應式站点的預設操作。問题在于,被隐藏的如果正好是正文主体、面包屑或主要内鏈,移動 UA 拿到的就是一份骨架。搜尋引擎對刻意隐藏的内容有自己的判断逻辑,大量正文級内容被藏,容易让頁面被当作内容稀薄處理。

折中做法是:交互性、辅助性内容可以按屏幕收折;正文、标题、關键内鏈、结构化信息尽量保持可见,或者改用 DOM 中存在、只是视觉上可展開的方式呈現。

按 UA 返回不同 HTML

動態服務(同一 URL,根據請求头返回不同 HTML)技術上完全可行,但需要明确告诉缓存层:這個地址的响應會随 UA 而變。否則中間缓存很可能把移動版發给桌面用戶,或者反過来。

這類方案還要注意別让两個版本的内容量差太多。移動版砍掉一半正文、去掉全部相關阅讀,等于主動把可评估的信息减半。

自查清單

不需要复杂工具,拿几组 UA 分別請求同一批地址,對比返回内容即可。重点看這几項:

  1. 正文是否完整。移動 UA 下正文段落數、字數、關键小节标题是否與桌面版基本一致。
  2. 内鏈是否保留。導航、面包屑、正文内鏈、相關阅讀是否在移動版里同样存在。
  3. canonical 與對應标注是否自洽。移動域與桌面域之間是否互相指向,有没有指向無關地址或空值。
  4. 跳轉是否稳定。同一 UA 多次請求,跳轉目标是否始终一致,有没有出現循环。
  5. 狀態碼是否一致。同一地址在两種 UA 下是否都返回 200,而不是一邊 200 一邊 302 到首頁。
  6. 结构化資料是否一致。移動版是否漏掉了标题、時間、作者等字段。
  7. 缓存头是否合理。動態分流时是否带了区分 UA 的信号,避免不同版本互相串味。
  8. 移動端浮层。是否有一個遮挡大半屏、關閉按钮极小的彈窗,压住正文可见性。

發現不一致之後怎么處理

優先級從高到低:先保證正文和内鏈在移動版完整可见,這一項影响最大也最容易改;其次理顺 canonical 與對應标注,让两個版本表達同一個意思;最後再處理缓存、跳轉稳定性這類偏工程的問题。

改完不必急着反复驗證,给抓取和缓存留一点更新時間,再回到日誌里看移動 UA 的抓取结果是否符合预期。

一句话原則:同一份内容,不管訪問者用什么设备,都應该能讀到大致相同的信息。差异可以体現在交互和排版上,不要体現在“能讀到什么”上。