双套URL是怎么来的
早些年做移動适配,常见做法是给移動端單獨准备一套域名或目錄,例如 m.example.com、/mobile/、/wap/。桌面端頁面负责承载内容,移動端頁面负责使用体驗,两邊各有各的URL。這種做法本身没有對错,問题往往出在运营過程中:桌面端加了新栏目,移動端還没同步;移動端換了模板,桌面端的老連結忘了處理。搜尋蜘蛛可能只爬到其中一套,另一套要么找不到入口,要么找到了却是一堆内容相近的頁面。
先把對應關系理清楚
双套URL的核心是“一對一”。每個桌面端頁面都應该能找到一個功能相同的移動端頁面,反之亦然。建议在栏目規划阶段就把規則定下来,並用程序保證执行:
- 桌面端頁面輸出指向移動端對應頁的連結,移動端頁面反向指回桌面端,让蜘蛛在两套頁面之間来回走,不要留下只有一邊能到達的孤頁。
- 頁面头部同时声明两個版本,配合 canonical 指明主版本,避免两套内容互相竞争同一個位置。
- URL 结构尽量保持一致,只替換域名或目錄前缀,例如 /news/2024/05/abc.html 對應 m.example.com/news/2024/05/abc.html,方便比對和排查。
- 建立一份映射清單,栏目調整、批量改版时按清單同步,不要靠记忆。
自動跳轉要留個後门
很多站点用 User-Agent 判断设备,桌面 UA 訪問就跳到移動站,移動 UA 訪問桌面地址又跳回来。這種跳轉如果寫得過于绝對,蜘蛛抓桌面頁面时會被直接送去移動頁面,结果两套URL里只剩一套能被稳定抓取。更麻烦的是跳轉目标如果带上了會话參數,同一個頁面會裂變成無數個URL。
跳轉的目的是把用戶送到更合适的頁面,不是把蜘蛛挡在门外。判断设备时尽量保留“不跳轉”的出口,让蜘蛛可以按原URL抓取到完整内容。
robots.txt 與 Sitemap 的分工
两套URL经常共用一份 robots.txt,也经常被分別處理。這里容易出現的两個問题:一是移動端目錄被整段 Disallow,桌面端頁面里指向移動端的連結全成了死胡同;二是 Sitemap 只提交桌面端地址,移動端頁面長期没有站外入口,只能靠内鏈慢慢被發現。
實际做法可以简單一些:
- 確認两套URL都不會因為誤封而断鏈,尤其是静態资源目錄和分頁目錄。
- Sitemap 里以主版本URL為主,同时用 alternate 之類的标注把對應關系寫清楚,让蜘蛛明白這不是两個互不相關的站点。
- 如果移動端确實存在大量低质頁面,例如自動生成的篩選列表,單獨限制這部分,而不是一刀切關掉整個目錄。
日常检查清單
- 随机抽 20 個桌面端頁面,检查移動端對應頁是否存在、是否可訪問、狀態碼是否正常。
- 看服務器日誌里移動端目錄的抓取记錄占比,如果長期接近零,說明入口太少或跳轉太激進。
- 检查是否有“桌面能打開、移動端 404”或者反過来的情况。
- 排查跳轉鏈,尽量控制在一次跳轉内完成,避免 A→B→C 的连环跳。
- 栏目新增或下线时,同步更新两套URL和映射清單。
小结
移動端與桌面端的双套URL,本质上是同一份内容的两套门牌号。运营要做的不是让蜘蛛二選一,而是把两套门牌号對應清楚、互相可達、主次分明。對應關系理顺之後,内容本身没有變,能被發現的入口却多了一條。