網站收錄

測試域名和裸 IP 也能打開整站:多入口訪問造成的重复收錄怎么處理

同一套頁面能通過主域名、測試域名、裸 IP 等多個入口訪問时,搜尋引擎可能把它們当成不同站点分別收錄。本文按“確認范围—收口入口—驗證效果”的顺序,梳理預設虚拟主机、泛解析、canonical 相對路径等常见诱因,並给出可落地的處理步骤。

網站收錄

測試域名和裸 IP 也能打開整站:多入口訪問造成的重复收錄怎么處理

做站一段時間後,site: 查询里除了主域名,常常還會冒出 test.example.com、staging.example.com,甚至 203.0.113.10/xxx 這样的裸 IP 地址。点進去内容與正式站一模一样。這不是抓取出了故障,而是訪問入口没有收口:同一套頁面被多個域名或地址指向,搜尋引擎自然會当成多個站点處理。

為什么會出現多個入口

  • 服務器預設虚拟主机没有限制,任何域名解析到這台机器都能返回同一份内容。
  • 泛解析(*.example.com)開啟後,任意子域名都能打開站点。
  • 直接用 IP 訪問时没有做 Host 校驗,照样返回 200。
  • CDN 回源配置了多個源站地址,预览域名、測試环境公網可訪問。
  • 開發阶段用 hosts 指過域名,上线後忘了清理解析记錄。

這些入口對浏览器和爬虫是同等的。只要返回 200,爬虫就可能顺着外鏈、日誌或歷史记錄找到它們,並逐條抓取。

先確認范围,再動手

  1. 用带 Host 头的請求检查狀態碼,例如 curl -I -H "Host: test.example.com" http://主IP/,看返回的是 200、301 還是 403。這一步能判断問题是“能訪問”還是“只是解析存在”。
  2. 對该子域名和裸 IP 分別做 site: 查询,记錄被收錄的 URL 形態、路径規律和大致數量,判断是整站規模還是零星几條。
  3. 抽查這些頁面的 canonical 标簽。如果寫的是相對路径,或由程序自動拼接目前域名,那么每個入口都會指向自己,等于主動告诉搜尋引擎“我不是重复的”。
  4. 检查站点地图、内鏈、頁脚、分享按钮、QR Code和邮件模板里是否混入了測試域名。

處理方式:让入口收口到唯一地址

  • 首選把測試域名與裸 IP 整站 301 到主域對應路径,並保留路径映射關系,不要一律跳到首頁,否則原本有排名的頁面會失去對應目标。
  • 如果測試环境本来就不该對外服務,直接限制訪問(IP 白名單、基础認證),返回 403 比返回 200 更清楚。
  • 關閉泛解析,或在預設虚拟主机里配置一個明确的拒绝响應,避免任意子域名都能打開首頁。
  • canonical 一律使用绝對地址,主域固定為唯一版本(带 www 或不带 www,二選一,長期不變)。
  • robots.txt 不适合用来区分主域與測試域名,因為爬虫取到的是同一份文件,很容易誤伤主站目錄。
處理入口收敛时,先让舊地址返回明确的跳轉或拒绝狀態,再谈索引更新。索引移除和替換需要時間,不要期待立刻消失。

容易忽略的几個细节

  • 带 www 與不带 www 若都返回 200,本质上是同一類問题。
  • HTTP 與 HTTPS 同时可訪問,也會形成两套入口。
  • 短鏈服務、QR Code、歷史邮件中寫死了測試域名,外部引用不會自動失效。
  • CDN 缓存里可能仍保留着舊入口的响應,收敛後需要確認缓存策略。

收敛之後怎么驗證

重新用带 Host 头的請求抽查各入口狀態,確認都指向主域或明确拒绝;對比處理前後的日誌,观察測試域名下的抓取是否减少;在索引报告里持續观察主域頁面數是否稳定,而不是忽高忽低。内鏈和站点地图全部改用主域绝對地址,是让收敛長期有效的關键一步。

把入口收口当成常規维護動作,比等到重复收錄已经形成規模再补救要省事得多。每次上线新环境、新增解析记錄时顺手检查一遍訪問狀態,就能避免同類問题反复出現。