萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 實現 301 永久重定向:域名規範化與 SEO 權重遷移

當網站換域名、調整目錄結構或更換文件名稱時,301 永久重定向是保障搜尋引擎流量不流失、權重平滑轉移的標準方案。本文詳解 PHP 實現 301 重定向的核心代碼與 .htaccess 替代方案。

核心場景:非 www 強制跳轉 www

統一域名入口,集中權重:

<?php
$host = $_SERVER['HTTP_HOST'];           // 獲取訪問域名
$requestUri = $_SERVER['REQUEST_URI'] ?? ''; // 獲取請求路徑含查詢串

if ($host !== 'www.example.com') {       // 目標規範域名
    header('HTTP/1.1 301 Moved Permanently'); // 發送 301 狀態碼
    header("Location: https://www.example.com$requestUri"); // 保持路徑不變
    exit; // 關鍵:阻止後續代碼執行
}
?>

關鍵技術點解析

  1. 狀態碼優先:必須先發送 HTTP/1.1 301 Moved Permanently,再發送 Location,順序不可顛倒。
  2. 保持 URI:使用 $_SERVER['REQUEST_URI'] 保留原請求路徑與查詢參數,實現頁面級一對一映射。
  3. 立即退出:exit 或 die() 防止腳本繼續執行輸出內容,導致頭部已發送錯誤。
  4. 輸出前調用:確保無任何輸出(含 BOM、空白)在 header() 之前。

.htaccess 方案(推薦用於全站規則)

在 Web 服務器層面處理,效能優於 PHP,且不消耗 PHP-FPM 進程:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
  • R=301:發送 301 狀態碼
  • L:最後一條規則,停止後續匹配
  • NC:不區分大小寫匹配域名

適用場景對比

| 方案 | 適用場景 | 優點 | 缺點 | |------|----------|------|------| | PHP header | 應用層邏輯判斷(如登入狀態、權限、動態路由) | 靈活、可編程控制 | 消耗 PHP 進程、需啟動框架 | | .htaccess / Nginx conf | 全站域名規範化、靜態資源、目錄級重寫 | 效能高、不經 PHP、配置即生效 | 需服務器權限、調試相對麻煩 |

驗證重定向是否生效

curl -I https://example.com/page
# 應返回:
# HTTP/1.1 301 Moved Permanently
# Location: https://www.example.com/page

避坑指南

  • 避免重定向鏈:A→B→C 應優化為 A→C,每次跳轉損耗權重與速度。
  • HTTPS 同時遷移:若同時啟用 HTTPS,直接 301 到 https://www.example.com,避免雙重跳轉。
  • 更新站內鏈接:重定向是補救,源頭修正鏈接才是根治。
  • 提交站長工具:百度/Google 站長平台提交改版規則,加速收錄切換。

總結

301 永久重定向是網站遷移、域名規範化的基石。PHP 實現靈活適合動態邏輯,.htaccess/Nginx 配置效能更優適合全站規則。核心原則:正確狀態碼 + 保持 URI + 立即退出 + 避免鏈式跳轉。配合站長工具提交,讓權重平滑過渡,流量零損失。

copyright © 萬盛學電腦網 all rights reserved