首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實現 301 永久重定向:最佳實踐與 SEO 遷移指南

     編輯:PHP 相關知識

什麼是 301 重定向?

301 Moved Permanently 是 HTTP 狀態碼之一,告訴瀏覽器與搜尋引擎:「請求的資源已永久移動到新位置」。不同於 302(臨時重定向),301 會傳遞原頁面的權重(PageRank)、收錄歷史與鏈接權益,是網站換域名、調整 URL 結構、合併內容時的標準做法。

為何選擇 301 而非其他方式?

方式SEO 影響適用場景
301 永久重定向權重完整傳遞,無規範化問題換域名、目錄重構、HTTPS 遷移
302 暫時重定向權重不傳遞,易產生 URL 規範化混淆臨時維護、A/B 測試
JavaScript / Meta Refresh搜尋引擎可能視為作弊,延遲傳遞權重極少數無法控制 Server Header 的環境

PHP 實作標準代碼

<?php
// 目標網址
$targetUrl = 'https://www.new-domain.com/new-path';

// 發送 301 狀態碼(建議顯式指定協議版本)
header('HTTP/1.1 301 Moved Permanently');
// 設定新位置
header('Location: ' . $targetUrl);
// 立即終止腳本,避免後續輸出干擾
exit();
?>

部署位置建議

將上述代碼置於**舊網站所有入口檔案的最頂端**(在任何 HTML 輸出之前)。常見檔案包括:

  • index.php
  • forumdisplay.php、viewthread.php(Discuz 類論壇)
  • archiver/index.php、space.php、tag.php、blog.php

若使用框架(Laravel、ThinkPHP、Yii 等),請在路由中間件或基礎控制器的 beforeAction 中統一處理,避免重複代碼。

驗證重定向是否生效

使用 curl -I 檢查回應頭:

$ curl -I https://old-domain.com/
HTTP/1.1 301 Moved Permanently
Location: https://www.new-domain.com/new-path
...

瀏覽器開發者工具 Network 分頁亦可看到 301 狀態碼與 Location 標頭。

常見坑點提醒

  1. 務必加 exit(): 否則腳本繼續執行可能輸出內容,導致瀏覽器忽略重定向。
  2. 避免重定向鏈: 直接指向最終目標,不要 A → B → C,損耗爬蟲預算與頁面速度。
  3. 保留查詢字串: 若需帶參數,手動組裝 $targetUrl . '?' . $_SERVER['QUERY_STRING']。
  4. 更新 Sitemap 與內部連結: 重定向是補救,源頭修正才是根本。

總結

301 重定向是 SEO 遷移的基石。PHP 端僅需幾行 header() 即可實現,關鍵在於「正確部署位置」與「徹底清理重定向鏈」。配合 Search Console 的「網站遷移」工具提交新舊網址對照,可加速搜尋引擎權重轉移。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved