首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

301 永久重導向實戰:從域名被劫持到權重恢復的完整復盤

     編輯:MySQL 資料庫相關知識

案件背景

  • 主域名:www.qzhen.com(優化目標)
  • 非預期域名:www.qqzhen.com(與主站內容完全相同)
  • 現象:百度排名消失,搜尋標題顯示為非預期域名,判定為「域名劫持/鏡像站」導致權重分流。

錯誤決策與教訓

  1. 未立即執行 301 導向,寄望搜尋引擎自動辨識 → 拖延數週排名未恢復。
  2. 嘗試程式碼層面 301(ASP `Response.Status="301 Moved Permanently"`),但 HTTP 狀態碼實測為 200 OK,導向無效。
  3. Google 管理後台「變更網址」驗證失敗(其中一域名無法驗證)。

關鍵發現

  • 兩域名解析 IP 不同,但指向同一虛擬主機空間(共用 IP 池)。
  • 客戶原廠商對 `www.qqzhen.com` 做過導向設定,但回傳 200 OK,非 301。
  • 清除無效導向後,Google 管理後台驗證通過,權重隔日恢復;百度隨後跟進恢復。

最佳實務 SOP

  1. 優化前確認:詢問客戶是否有其他域名指向同站,若有 → 立即規劃 301 導向。
  2. 導向優先序:
    1. 域名註冊商/ DNS 服務商的 URL 轉發(真 301)
    2. Web 伺服器層(Nginx/Apache/IIS Rewrite)
    3. Google Search Console「變更網址」工具
    4. 應用程式碼(最後手段,需驗證狀態碼)
  3. 驗證:用 `curl -I` 或線上 HTTP Header 工具確認回傳 301 Moved Permanently 且 `Location` 指向正確目標。
  4. 雙域名都被收錄時:判斷哪個為主域名(權重較高者),優化主域名,次域名 301 導向主域名。

程式碼層面 301 正確寫法

// PHP
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.qzhen.com");
exit();

// Nginx
server {
    server_name www.qqzhen.com qqzhen.com;
    return 301 https://www.qzhen.com$request_uri;
}

// Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?qqzhen\.com$ [NC]
RewriteRule ^(.*)$ https://www.qzhen.com/$1 [R=301,L]
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved