站点运营

站点运营:域名與 URL 形態自查,別让蜘蛛在两套地址間来回跑

同一個頁面如果能通過 http 和 https、带 www 和不带 www、带斜杠和不带斜杠等多種地址打開,對蜘蛛来说就是多個頁面。這篇讲怎么查清站点存在几種地址形態,用 301 和内鏈统一收口,避免抓取和權重被分散。

站点运营

站点运营:域名與 URL 形態自查,別让蜘蛛在两套地址間来回跑

一個頁面如果同时能通過好几種地址打開——http 的和 https 的、带 www 和不带 www 的、结尾带斜杠和不带的——對搜尋引擎来说,這就是几個不同的地址。蜘蛛自己不會判断哪個才算标准,它只會照着找到的連結去抓。如果服務器對每種形態都直接返回 200,抓取和權重就分散開了。

哪些地方最容易出現形態分歧

  • 协议层:http 和 https 都能訪問,或者只有首頁跳轉、内頁没有跳。
  • 主机名:example.com 與 www.example.com 都返回 200,没有互相收口。
  • 目錄尾斜杠:/about 與 /about/ 都能打開,服務器不做归一。
  • 大小寫:Linux 环境下 /About 與 /about 是两個真實路径,都能返回内容。
  • 預設文件名:/index.html、/index.php 和根目錄 / 都能訪問到同一份内容。
  • 端口号:某些环境下 https://example.com:443/ 也能被訪問到。

做一轮訪問測試,先看清現状

  1. 把首頁和几個内頁拿出来,用 https、http、带 www、不带 www、带斜杠、不带斜杠、大小寫變体分別訪問一遍。
  2. 记錄每個组合返回的狀態碼。理想情况是只有一種组合返回 200,其余全是 301 到那一個地址。
  3. 如果某個變体返回 200,說明服務器没有做收口,需要补規則。
  4. 再看服務器日誌,按 Host 字段統計搜尋引擎蜘蛛訪問时用的主机名。如果日誌里出現两種以上主机名,說明蜘蛛确實在两套地址之間跑。

统一要落到服務器层,而不是只寫在頁面里

頁面里的 canonical 只能算兜底提示,真正管用的收口動作是服務器返回 301。做法是把規范形態定下来,通常是 https 加一個固定主机名,其余所有變体都 301 到它。nginx 里通過 server_name 加 return 301 组合就能覆盖大部分情况,Apache 用 RewriteRule 也可以。

重定向不要串成一長串

常见問题是一次訪問要跳三四次:http 跳到 https,再跳到带 www,再补尾斜杠。每多一跳,抓取效率就低一点。規則要寫成一步到位,把协议、主机名、尾斜杠在同一條重定向里處理完。

内鏈和静態资源一起改

只改服務器規則、站内連結還寫着舊地址,蜘蛛每次進来都要多绕一跳。導航、面包屑、正文里的内鏈、Sitemap、RSS、图片和 CSS/JS 的引用路径,都要统一成規范形態。相對路径能避免一部分問题,但頁面模板里的绝對地址和硬编碼域名要逐個检查。

Sitemap 與 canonical 只保留一種寫法

Sitemap 里提交的 URL 應当全部是規范形態,不要混着舊域名。canonical 标簽也统一寫規范形態,作為頁面层的次級保險。

几個容易漏掉的细节

  • 重定向的落点不能是 404 或另一個重定向,改版删頁时尤其容易出這個問题。
  • CDN 或负载均衡层有自己的規則,源站改好了,邊缘节点可能還在返回 200,需要同步配置。
  • HTTPS 頁面里如果還引用 http 的图片或脚本,浏览器會拦截加载,蜘蛛也可能拿不到這些资源。
  • 證书過期會導致跳轉鏈断掉,可以用监控定期检查一下到期時間。
形態统一這件事,做完之後不會立刻看到什么變化,但没做的时候,後續所有關于抓取和收錄的分析都會失真——因為你连蜘蛛抓的是哪一個地址都不确定。