先分清你的站点属于哪種形態
讨论收錄之前,要先確認 PC 端和移動端是同一套 URL 還是两套地址。形態不同,搜尋引擎抓到的頁面、可以引用的地址都不一样。
- 响應式站点:同一套 URL、同一份 HTML,靠 CSS 适配屏幕。收錄层面最简單,只需要维護一套地址。
- 動態服務:URL 相同,服務器根據 User-Agent 返回不同的 HTML。要保證两端内容等價,尤其是正文和主要導航。
- 獨立移動域名:像 m.example.com 這样的獨立地址,PC 和移動各有一份内容。這是最容易出問题的一類。
收錄到底認哪一套
目前主流搜尋引擎的抓取以移動端為主,多數情况下它會用移動端的 User-Agent 来訪問頁面。落到獨立 m 站上,蜘蛛拿到的就是 m 站的 HTML 和 m 站的 URL。索引里最终留下哪一套,取决于你给出的規范化信号是否一致。
常见做法是:PC 頁用 link 标簽配合 media 属性指向 m 頁,m 頁用 rel=canonical 指回 PC 頁。這相当于告诉搜尋引擎,两個地址是同一份内容的两種呈現,主版本是 PC 頁。如果反過来两套都声明自己才是規范版本,信号就散了。
還有一点容易被忽略:站内連結用哪一套地址,會影响蜘蛛的發現路径。移動端模板里的内鏈如果全都指向 m 站,那 m 站被發現的概率就遠高于 PC 站,哪怕你在标簽层面做了收敛。
獨立 m 站最容易踩的四個坑
1. 两端互相声明 canonical
m 頁寫 rel=canonical 指向自己,PC 頁也寫指向自己,两邊谁也不肯让。搜尋引擎收到的是两個互相矛盾的主版本声明,最後收哪一套就變成了碰运气,也容易出現抓取在两個地址之間反复切換。
2. m 站被 robots.txt 或登入墙挡住
有些站点為了保證 PC 端流量,顺手把 m 站整站屏蔽,或者让移動端頁面必须登入才能看正文。移動優先抓取的环境下,這等于把蜘蛛挡在门外,能拿到的只有一份空壳。静態资源目錄被誤屏蔽也是同類問题,頁面能抓到但样式和脚本拿不到。
3. 两端内容不對等
PC 頁有完整參數表和長文,m 頁只留一句摘要加一個跳轉按钮。两份内容差距過大时,标簽层面的規范声明就失去意义,因為它們已经不是同一份東西了。要收敛的前提,是两端确實描述同一件事。
4. 切換只有跳轉,没有可抓取的連結
頁面上寫着「切換到电脑版」,点下去靠 JavaScript 跳轉,地址没有出現在 HTML 里。這種寫法用戶能走通,蜘蛛走不通,两套地址之間等于没有通道。
一份可以照着做的核對清單
- 用移動端 UA 抓取几個代表性 URL,確認返回的是移動版 HTML,狀態碼是 200。
- 检查 m 頁的 canonical 是否指回 PC 頁,PC 頁的 alternate 是否指向 m 頁,两邊能否一一對應。
- 確認 m 站的 robots.txt 没有誤屏蔽整站,也没有连带屏蔽 CSS、JS 所在目錄。
- 對比两端的标题、正文、導航和關键連結是否一致,移動端不要只留摘要。
- 查看移動端模板里的内鏈,是否指向可抓取的 HTML 地址,而不是 JS 跳轉。
- 在搜尋结果里抽查几個頁面,看展示的是哪一套 URL,與预期是否一致。
观察时別只用一個 UA
排查這類問题,最好同时用桌面 UA 和移動 UA 各抓一遍,记錄狀態碼、最终地址、頁面标题和 canonical 值,逐條對照。如果两套结果的正文長度差异明顯,問题多半出在内容层而不是标簽层。改完之後也不必急着下结论,收錄狀態的變化通常需要一段观察期,重点看下一轮抓取拿到的是哪個版本。
同一份内容只留一個主版本,是收錄稳定的前提。形態選得越简單,需要维護的信号就越少。