很多收錄問题不是頁面内容本身引起的,而是同一個頁面有多個“入口”。用戶從 https://www.example.com/a 進来,蜘蛛却可能從 http://example.com/a、https://example.com/a 或带尾斜杠的版本發現它。入口一多,信号就容易分散:外鏈指向不同版本,站点地图提交的是另一個版本,canonical 又寫了第三個版本。此时讨论“為什么没收錄”或“為什么只收錄一條”,往往要先回到主域是否统一。
先确定一個規范主域,而不是四個都能用
規范主域是站点對外預設使用的唯一域名和协议组合。它應该同时满足三件事:用戶訪問时最终落在這個版本;内鏈和 sitemap 寫的是這個版本;服務器對其它變体做跳轉,而不是让它們各自返回 200。
常见變体包括:
- http://example.com
- http://www.example.com
- https://example.com
- https://www.example.com
這四者如果都能直接打開並返回 200,蜘蛛就會把它們当作四個可抓取 URL。收錄结果可能是四個都進索引,也可能只留下其中一個,具体取决于蜘蛛如何判断重复關系。對站点来说,這種不确定性没有必要保留。
301 和 canonical 不是二選一,而是各管一段
301 跳轉管的是訪問层:用戶和蜘蛛請求非規范版本时,服務器直接把它带到規范版本。canonical 管的是索引层:当頁面因為歷史原因無法立刻跳轉,或者參數、打印頁等變体必须保留可訪問时,用 canonical 告诉搜尋引擎“我更希望你把哪個 URL 当作代表”。
canonical 是建议,不是强制指令。只寫 canonical 而不做跳轉,仍然可能让蜘蛛持續抓取多個版本。
因此,主域层面的變体優先用 301 解决;頁面层面的重复,比如带追踪參數的列表頁,可以再用 canonical 收敛。两者配合,比只依赖其中一個更稳妥。
sitemap、内鏈和外鏈尽量寫同一個版本
站点地图是 URL 發現的入口之一,内鏈是蜘蛛在站内爬行的路径。如果 sitemap 提交裸域,内鏈却用 www,蜘蛛會認為這是两套地址。外鏈虽然不可控,但你可以主動联系重要外鏈方更新,或者至少确保自己發布的内容里連結统一。
可以按這個清單核對:
- sitemap 中的 URL 是否全部使用規范主域和协议;
- 站内導航、面包屑、相關推荐是否统一;
- 頁面里的 canonical 是否指向同版本規范 URL;
- RSS、API 輸出、分享按钮生成的連結是否统一;
- 舊域名或舊协议是否仍有 200 响應。
HTTPS 迁移後容易留下的尾巴
從 HTTP 換到 HTTPS 时,常见問题不是證书本身,而是舊地址没有全部跳轉。比如首頁跳了,文章頁没跳;主域跳了,带參數的 URL 没跳;sitemap 更新了,但内鏈模板還是 HTTP。蜘蛛會繼續從舊地址發現和抓取頁面,收錄信号也就繼續分散。
另外要检查混合内容:HTTPS 頁面里如果還引用 HTTP 的图片、脚本或样式,浏览器可能拦截,蜘蛛也可能對頁面质量产生负面判断。這未必直接導致不收錄,但會增加頁面正常呈現的不确定性。
怎么检查主域是否已经统一
不需要复杂工具,按顺序做几步就能看出大概:
- 用浏览器無痕模式訪問四個變体,確認最终地址都跳到同一個規范版本;
- 查看跳轉狀態碼是否為 301,而不是 302 或 JS 跳轉;
- 在服務器日誌里篩選非規范主域的請求,看蜘蛛是否還在抓;
- 检查 sitemap 和主要内鏈模板,確認没有混用;
- 在搜尋资源平台查看已收錄 URL,看是否有多個版本同时出現。
如果發現多個版本都在索引里,先不要急着用刪除工具。把跳轉和 canonical 理顺,让蜘蛛重新抓取規范版本,通常比直接提交移除更合适。移除工具适合處理已经失效或必须下线的 URL,不适合替代規范化。
统一主域不等于保證收錄
把主域、协议、sitemap 和内鏈统一,作用是减少重复 URL 带来的信号分散,让蜘蛛更清楚哪個地址值得抓取和索引。它不能保證頁面一定被收錄,也不能让低质量頁面變成高质量頁面。收錄與否還取决于内容、頁面体驗、站点整体质量和蜘蛛的抓取安排。
但這項工作成本低、影响面清楚。如果你正遇到“同一篇内容只收錄一條”“舊地址還在被訪問”“新頁面發現慢”等情况,先检查主域是否统一,往往能排除掉一批本可以避免的干扰。