很多站点运营者检查頁面时习惯用桌面浏览器,但搜尋蜘蛛現在更常以移動端的身份来抓取。同一個 URL,你在电脑上看到的内容和蜘蛛拿到的内容可能並不完全一致。理解這一点,比反复提交 Sitemap 更能解释“為什么這個頁面迟迟没被正常抓取”。
移動優先意味着什么
移動優先索引的基本逻辑是:搜尋引擎主要用移動版頁面的内容来理解和索引這個 URL。蜘蛛抓取时會带上移動端的 User-Agent,按移動端的视口来渲染頁面。如果你只在桌面版放了完整内容,而移動版被精简過,蜘蛛看到的就是精简後的版本。
這並不代表桌面版不重要,而是说同一個 URL 在两套模板下呈現的内容差距,會直接影响蜘蛛對頁面的判断。抓取路径本身没變,變的是路径尽头那個頁面長什么样。
三種移動方案的抓取差异
响應式设計
响應式是最省事的一種:URL 相同、HTML 相同,只是 CSS 按屏幕宽度調整布局。蜘蛛抓到的 HTML 和用戶看到的 DOM 基本一致,不存在两套内容對不上的問题。需要留意的是,別把重要内容在窄屏下用 CSS 隐藏起来。虽然多數引擎會渲染並考虑隐藏内容,但過度隐藏容易让這部分内容的權重打折。
動態服務
同一個 URL,服務器根據 User-Agent 返回不同的 HTML。這種方案下,蜘蛛請求时拿到的必须是完整内容版本。如果服務器把移動端 UA 誤判成普通手机用戶,返回一個阉割版頁面,抓取就會失真。
另一個常见問题:有的站点對移動端 UA 做跳轉,把 www 地址 302 到 m 地址。這时蜘蛛的抓取路径會多一跳,最终落到 m 站。要确保 m 站可以被正常抓取,而不是被 robots.txt 或登入墙挡住。
獨立 m 站
m 站是獨立域名或子域,抓取路径自然分成两條。此时要用标注告诉搜尋引擎两個 URL 的對應關系。Google 用 rel="alternate" media="only screen and (max-width: 640px)" 配合 rel="canonical",百度則有自己的移動适配提交方式。标注缺失时,蜘蛛可能把桌面版和移動版当成两個頁面分別處理,造成内容重复或權重分散。
内容折叠與资源屏蔽
移動端頁面常见的两個坑:
- 折叠菜單:導航和栏目連結被收進汉堡菜單,如果菜單内容靠 JS 点击後才注入 DOM,第一次抓取时可能看不到這些連結,抓取路径就断在這里。
- 资源屏蔽:為了省流量,移動版屏蔽了部分 CSS 或 JS。渲染型抓取依赖這些资源来還原頁面,被屏蔽後蜘蛛看到的可能是一個残缺的 DOM。
這两点都會让 URL 發現這條路變窄:内鏈在源碼里根本不存在,蜘蛛自然沿着走不下去。
服務器端适配要小心的地方
有些站点在 Nginx 或 CDN 层根據 UA 分發内容,這類配置要避免几種情况:
- 把搜尋引擎的移動 UA 当成真實手机用戶,返回與桌面不同的短版本内容。
- 對移動 UA 返回 302 跳轉,但跳轉目标又带參數,产生多個 URL 變体。
- UA 列表维護不及时,新出現的爬虫 UA 落到預設分支,拿到错誤頁面。
判断标准很简單:用移動端 User-Agent 請求一次這個 URL,看看返回的 HTML 里有没有正文、有没有内鏈,和桌面版對比差多少。
可以定期检查的几項
- 同一 URL 在移動 UA 下的 HTML,正文和内鏈是否完整。
- m 站與桌面站的對應标注是否齐全,canonical 是否指向正确的版本。
- 移動端是否屏蔽了關键 CSS/JS,導致渲染後 DOM 缺内容。
- 服務器日誌里移動 UA 的抓取是否返回 200,有没有被 302 绕圈。
- 折叠導航里的連結是否出現在初始 HTML 中。
移動優先不是要你放弃桌面版,而是保證两套呈現下,蜘蛛能看到同一份可抓取、可發現連結的内容。抓取路径顺不顺,很多时候取决于這一步有没有對齐。