HTTP 重新導向完整教學
什麼是 HTTP 重新導向?
HTTP 重新導向(URL 重新導向)是一種自動將使用者從一個網址導向另一個網址的機制。當您請求一個頁面時,伺服器可能會回應 3xx 狀態碼和 Location 標頭,指向新的位址 — 瀏覽器會自動跟隨該位址。
重新導向用於許多常見場景:
- 將網站遷移到新網域
- 重新調整網址路徑結構
- 從 HTTP 升級到 HTTPS
- 為行動裝置和桌面提供不同的網址
- 短網址服務(bit.ly、t.co 等)
- A/B 測試和流量分配
重新導向的運作方式
客戶端請求:
GET /old-page HTTP/1.1
Host: example.com
伺服器回應:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page
重新導向類型詳解
301 Moved Permanently
301 是最常見的重新導向類型。它告訴客戶端和搜尋引擎,資源已永久移至新網址。
✅ 何時使用 301
- 永久網域遷移
- 永久網址結構調整
- HTTP → HTTPS 升級
- 合併重複內容
SEO:搜尋引擎會將連結權重(PageRank)轉移到新網址並更新索引。Google 通常在幾週內完成此過程。
瀏覽器行為:瀏覽器可能會快取 301 重新導向,在後續造訪時跳過原始網址。
302 Found(暫時)
302 表示暫時移動。原始網址仍然有效且被索引。
✅ 何時使用 302
- 維護頁面
- A/B 測試
- 基於地理位置的暫時路由
- 短期行動/桌面版本分流
303 See Other
303 強制客戶端使用 GET 方法進行重新導向請求,無論原始方法為何。主要用於 POST 提交後,防止使用者重新整理時重複提交表單(Post/Redirect/Get 模式)。
307 Temporary Redirect
307 類似 302,但嚴格保留原始請求方法。POST 請求在重新導向後仍然是 POST — 不像 302 在歷史上允許方法變更。
308 Permanent Redirect
308 是 301 的方法保留版本。對於 GET 請求,301 和 308 的行為完全相同。當您需要永久重新導向且不能改變請求方法時,使用 308。
客戶端重新導向
Meta refresh
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">
不建議用於 SEO — 搜尋引擎可能無法正確處理。
JavaScript 重新導向
window.location.href = "https://example.com/new-page";
對 SEO 不理想,因為爬蟲可能不會執行 JavaScript。
⚠️ 客戶端重新導向的限制
客戶端重新導向不帶有 HTTP 狀態碼,因此搜尋引擎無法判斷移動是永久的還是暫時的。請優先使用伺服器端重新導向。
何時使用哪種重新導向
- 永久網域變更 → 301
- 暫時維護 → 302
- HTTP → HTTPS → 301
- www / 非 www 正規化 → 301
- 表單提交後 → 303
- A/B 測試 → 302
- 永久重新導向,保留方法 → 308
- 暫時重新導向,保留方法 → 307
SEO 影響
連結權重轉移
301 重新導向會將幾乎所有連結權重轉移到新網址。Google 曾表示 301 會轉移接近 100% 的 PageRank。302 不會轉移權重 — 原始網址保留其排名訊號。
索引更新時程
設定 301 後,Google 通常會:
- 在幾天內發現重新導向
- 在 1–4 週內更新索引
- 在 1–3 個月內完全轉移權重
重新導向鏈路的影響
鏈路中每增加一跳(A → B → C)都會增加延遲,並可能稀釋權重。Google 最多追蹤約 10 跳,但超過 3 跳的鏈路就是警訊。請務必從原始網址直接重新導向到最終目的地。
🎯 最佳實務
使用直接重新導向(A → C)。定期稽核您的鏈路,盡可能縮短它們。
常見問題與解決方案
1. 重新導向迴圈
症狀:瀏覽器顯示「重新導向次數過多」。
常見原因:CDN 和來源伺服器之間的 HTTPS 設定衝突、WordPress 的 siteurl 設定錯誤、Nginx/Apache 重寫規則互相衝突、.htaccess 設定錯誤。
# 使用 curl 診斷
curl -I -L https://example.com
或使用 301check.com 視覺化完整鏈路。
2. 查詢字串遺失
確保您的重新導向規則保留查詢參數。在 Nginx 中,使用 $request_uri 或 $is_args$args。
3. 快取的 301
瀏覽器會快取 301 重新導向。如果您變更了重新導向,使用者可能仍然看到舊的目的地。請在無痕視窗中測試或清除快取。
4. 行動裝置重新導向不匹配
如果行動裝置使用者被重新導向到首頁而非對應的行動版頁面,請修正網址對應或改用響應式設計。
最佳實務
- 永久變更使用 301,暫時變更使用 302
- 如果不確定,先用 302 — 確定後隨時可以升級為 301
- 避免重新導向鏈路;直接重新導向到最終網址
- 在重新導向規則中保留查詢字串
- 大規模遷移後透過 Google Search Console 監控
- 記錄所有重新導向規則,讓團隊了解現有設定
- 變更前後都用 301check.com 測試