搜尋抓取

移動端與桌面端两套 URL:蜘蛛抓取时會走哪一套

獨立 m 站和响應式站点在蜘蛛眼里是两種结构。前者容易让同一篇内容出現两條 URL,抓取量被重复消耗;後者只有一套地址,但頁面内容要和用戶看到的一致。文章從 URL 發現、互相标注、robots 與 sitemap 几個角度,說明站点该怎么把移動路径收口。

搜尋抓取

移動端與桌面端两套 URL:蜘蛛抓取时會走哪一套

站点要不要單獨做一個 m 站,讨论了很多年。從抓取角度看,這個選擇會直接影响蜘蛛能看到多少條 URL、走哪條路径、要不要把同一篇内容抓两遍。响應式和獨立移動站並不是谁更“正确”的問题,而是站点要清楚,蜘蛛在這两套结构里分別會遇到什么。

一套 URL 和两套 URL 的区別

响應式站点只有一套 URL,桌面和移動共用一個地址,頁面通過 CSS 适配屏幕。對蜘蛛来说,抓一次就拿到完整内容,URL 集合和頁面數量是對得上的,抓取路径也简單。

獨立 m 站的入口至少有两個:桌面地址和移動地址。如果這两個地址都能被蜘蛛發現,它就會分別排队、分別抓取。除非站点明确标注两者的關系,否則這部分抓取量是重复消耗的。内容越多,重复的比例越明顯。

响應式:一套地址,但別在返回内容上做手脚

响應式省掉了很多麻烦,不過有两個地方容易出問题。

  • 用 UA 判断返回不同 HTML。有些站点在服務端识別到移動 UA 时,返回一個精简過的頁面,正文被截断或者關键連結被删掉。蜘蛛拿到的如果是這一版,URL 是發現了,内容却看不全。
  • 關键内容靠脚本後置填充。响應式不等于把所有東西丢给前端。導航、正文連結、分頁入口,這些能被静態 HTML 直接輸出的,就尽量直接輸出。

獨立 m 站:把两套地址的關系标清楚

如果确實要维護两套路径,站点需要做的是让蜘蛛知道它們指向同一個頁面,而不是两條獨立内容。

  • 桌面頁面上放置 alternate 标注,指向對應的移動地址。
  • 移動頁面上放置 canonical 标注,指回桌面地址。
  • 两邊标注的地址要保持成對,不要一邊寫死了、另一邊漏掉。

這样蜘蛛仍可能两條都抓,但至少能判断出主版本,减少把同一内容当成两個頁面的情况。标注不一致时,比如移動頁 canonical 指向自己,那两套 URL 就會各自獨立存在。

移動 URL 常见的三類問题

  1. 入口只改造了一半。站内連結換成了移動地址,但 sitemap、外鏈、舊頁面里還留着桌面地址,蜘蛛從两個方向進来,看到的路径不一致。
  2. 移動站内容被裁剪。為了加载快,移動版把列表頁條數压缩、把正文段落删掉,蜘蛛顺着移動地址爬下去,能發現的下一层 URL 比桌面站少很多。
  3. 两套 robots.txt 規則不同。桌面站允许的目錄,移動站可能整段 Disallow,或者反過来。蜘蛛按各自域名下的規則执行,某一條路径就這样被挡在门外。

站点该怎么收口

可以按下面的顺序過一遍:先確認站点最终想保留哪一套作為主地址,再把 alternate、canonical、sitemap、内鏈全部统一到這套主地址上;接着检查移動地址的 robots.txt 是否和桌面站保持一致的放行范围;最後看移動版頁面里,導航、分頁、正文連結這些能被蜘蛛顺着走的路径是否完整,有没有被压缩掉。

移動端适配首先是给用戶看的,但两套 URL 之間的标注關系、sitemap 和内鏈的一致性,才是决定蜘蛛會不會重复消耗抓取量的地方。改版时這两件事最好一起定下来。