站点运营久了,域名和訪問入口往往會變多。比如早期用 www,後来換成不带 www;或者買了更短的备用域名;又或者上线過測試域名、CDN 域名、舊版域名。如果這些地址都能打開完整頁面,對用戶可能只是“多一個入口”,但對搜尋蜘蛛来说,就是同一套内容出現在多個 URL 上。抓取预算被分散,權重也可能被摊薄。
先把所有可訪問地址列出来
自查第一步不是改配置,而是把已知入口寫清楚。可以從這些地方找:
- 域名註冊商和 DNS 解析记錄里的 A 记錄、CNAME 记錄;
- 服務器 Nginx/Apache 配置中的 server_name;
- CDN 或對象存储绑定的加速域名;
- 站長平台和統計工具里出現過的来源域名;
- 歷史頁面、舊邮件、舊宣传物料里用過的地址。
列完之後,逐個用浏览器無痕模式訪問,看返回的是不是同一套内容。如果某個地址能正常打開,但你没打算把它当主入口,就需要處理。
确定唯一主域名,其余做 301
主域名最好只保留一個。常见做法是選带 www 或不带 www 的其中一個,然後把另一個做 301 永久跳轉。舊域名、备用域名、測試域名也同理:如果不再使用,可以解析到主域名並 301;如果只是内部測試,應该加訪問限制,不要让蜘蛛抓到。
注意跳轉鏈不要太長。比如舊域名跳到备用域名,再跳到 www,最後又跳到带路径的地址,這種多跳會浪費抓取资源。理想情况是一步到位:舊地址 301 到主域名對應的最终 URL。
canonical 與站点地图要指向主域名
頁面里的 canonical 标簽是告诉蜘蛛“哪個地址是正版”的重要信号。如果 canonical 寫的是备用域名,或者一會儿 www 一會儿非 www,蜘蛛會收到矛盾信息。建议全站模板统一輸出主域名,並确保 canonical 中的地址和目前頁面最终可訪問地址一致。
XML 站点地图也一样。站点地图里列出的 URL 應该是主域名下的最终地址,不要混入重定向地址、參數地址或測試域名。提交前可以抽查几條,看看打開後是否直接返回 200,而不是先跳轉。
内鏈和资源地址別混用域名
站内連結、图片、CSS、JS 的地址如果混用多個域名,也會让蜘蛛發現更多入口。比如文章内鏈有时寫 www,有时寫裸域,有时又引用 CDN 域名下的頁面地址。建议在模板和編輯器里统一使用相對路径或主域名绝對路径。
對于 CDN 上的静態资源,通常不需要被当作頁面抓取。可以在 CDN 域名下配置 robots.txt 或响應头,避免蜘蛛把资源域名当成内容站来爬。
镜像站與測試站要做隔离
有些团队會用镜像站做负载或容灾,或者用測試站预览新版本。這些站如果對公網開放,且没有訪問限制,很容易被蜘蛛發現。處理方式包括:
- 測試站加基础認證或 IP 白名單;
- 镜像站只對内部或特定回源開放;
- 如果必须公開,至少用 robots.txt 禁止抓取,並加 noindex;
- 不要在主站的站点地图或内鏈里指向測試域名。
一份可执行的自查清單
- 列出所有能返回完整頁面的域名和子域名。
- 确定唯一主域名,其余地址配置 301,尽量一步到位。
- 检查全站 canonical 是否统一指向主域名最终 URL。
- 检查 XML 站点地图是否只包含主域名地址。
- 抽查内鏈、图片、JS、CSS 是否混用域名。
- 检查舊域名、备用域名是否還有可訪問頁面。
- 確認測試站、镜像站没有對公網開放抓取。
- 在服務器日誌里观察是否還有蜘蛛訪問非主域名。
多域名問题不會立刻带来嚴重後果,但它會慢慢让 URL 入口變得混乱。每次改版、換域名、上 CDN 之後,顺手做一遍入口自查,比等到日誌里出現大量重复抓取再回头處理要省事。