301 Moved Permanently 告訴用戶端:目標資源已有新的永久網址(在 Location 標頭中傳送),日後參照時都應改用這個網址。瀏覽器會立即跟隨,而能夠修改連結的用戶端,例如書籤管理工具與連結檢查工具,也應該更新連結。
301 可依經驗法則快取。瀏覽器會儲存永久重新導向,在沒有設定 Cache-Control 標頭時往往會保存很久,之後造訪時會直接前往新網址,不再向舊網址發出要求。因此設錯的 301 很難收回:請先以較短的 Cache-Control: max-age 測試,或在搬移確定之前先使用暫時重新導向。
基於歷史因素,使用者代理程式在跟隨 301 時可以把要求方法從 POST 改成 GET,而所有主流瀏覽器都會這麼做。如果重新導向後的 POST 必須維持 POST(例如 API 或表單端點),請改用 308 Permanent Redirect。
回應範例
HTTP/1.1 301 Moved Permanently
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: nginx
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: https://www.example.com/new-page
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html> SEO 與重新導向檢查
301 是搬移內容又不失去搜尋曝光的標準做法。Google 將它視為「目標網址應成為標準網址」的強烈訊號,因此新網址會逐漸取代舊網址出現在搜尋結果中;Google 也表示過,3xx 重新導向不會流失 PageRank。網域搬遷、HTTP 改為 HTTPS、www 正規化、網址代稱(slug)變更與網頁合併,都應該使用 301。請將每個舊網址重新導向至最接近的對應網頁,而不是一律導向首頁,因為 Google 可能會把後者視為軟性 404。
請盡量縮短重新導向鏈。每多一個躍點就多一次往返,而 Googlebot 最多只會跟隨 10 個躍點,超過就會回報重新導向錯誤。請讓內部連結和 Sitemap 直接指向最終網址,避免出現 http:// → https:// → https://www. → /new-page 這樣的重新導向鏈。301 重新導向檢查會顯示每個躍點是否都是永久重新導向,HTTP 重新導向狀態碼詳解則比較了 301 與 302、307 和 308 的差異。
常見原因與使用情境
- 網站改用 HTTPS 或搬到新網域,每個舊網址都重新導向至對應的新網址。
- 將
www與非www主機,或有無結尾斜線的版本,統一為一種標準形式。可以使用 HTTPS 重新導向檢查與網址結尾斜線檢查進行測試。 - 網頁改名,或併入另一個網頁。
- 誤設了 301,瀏覽器持續使用快取中的重新導向。請先修正伺服器設定,再清除瀏覽器快取,或在無痕視窗中測試。