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

PHP 實作 HTTP 301 永久重導向完整指南:header 技巧與 SEO 最佳實踐

     編輯:PHP 相關知識

PHP 301 重導向實作全攻略:從基礎語法到 SEO 遷移策略

HTTP 301 永久重導向是網站遷移、域名整理、URL 正規化的關鍵技術。正確實作不僅能保持用戶體驗,更能傳遞 SEO 權重。本文詳細說明 PHP header 重導向技巧、常見場景與注意事項。

基礎 301 重導向語法

<?php
// 必須在任何輸出前呼叫
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://new-domain.com/new-path');
exit; // 關鍵:防止後續程式碼執行
?>

常見應用場景與程式碼範例

場景一:全站域名遷移(保留路徑)

<?php
$host = $_SERVER['HTTP_HOST'];
$requestUri = $_SERVER['REQUEST_URI'] ?? '';

if ($host === 'www.old-domain.com') {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: https://new-domain.com' . $requestUri);
    exit;
}
?>

場景二:多域名整合至主域名

<?php
$host = $_SERVER['HTTP_HOST'];
$requestUri = $_SERVER['REQUEST_URI'] ?? '';

$redirectMap = [
    'old-domain.com' => 'https://www.main-domain.com',
    'www.old-domain.com' => 'https://www.main-domain.com',
    'legacy.main-domain.com' => 'https://www.main-domain.com',
];

if (isset($redirectMap[$host])) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $redirectMap[$host] . $requestUri);
    exit;
}
?>

場景三:單頁面重導向

<?php
$oldUrls = [
    '/old-page.html' => '/new-page.html',
    '/products/old-item' => '/products/new-item',
    '/blog/2020/old-post' => '/blog/latest-post',
];

$requestUri = $_SERVER['REQUEST_URI'] ?? '';
if (isset($oldUrls[$requestUri])) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $oldUrls[$requestUri]);
    exit;
}
?>

header() 函數完整參考表

用途程式碼範例
設定內容型別header('Content-Type: application/json; charset=utf-8');
設定 HTTP 狀態碼header('HTTP/1.1 404 Not Found');
延遲重導向header('Refresh: 5; url=https://example.com');
檔案下載header('Content-Disposition: attachment; filename="export.csv"');
快取控制header('Cache-Control: no-cache, must-revalidate');
CORS 跨域header('Access-Control-Allow-Origin: *');

關鍵注意事項(避坑指南)

  1. 絕對在輸出前呼叫:任何 echo、HTML 空白、BOM 都會導致 "Headers already sent" 錯誤
  2. Location 標頭格式:Location: URL 冒號後需有空格,URL 建議使用絕對路徑
  3. exit() 必不可少:重導向後務必終止腳本,防止邏輯繼續執行
  4. 相對 vs 絕對 URL:RFC 7231 允許相對 URL,但建議使用絕對 URL 避免瀏覽器相容性問題
  5. 狀態碼語義:301=永久移動(SEO 傳遞權重)、302=暫時移動、307/308=保持方法

SEO 最佳實踐建議

  • 網站改版前建立完整 URL 對應表
  • 使用 Google Search Console 監控收錄狀況
  • 保持 301 規則長期有效(至少 1 年以上)
  • 避免重導向鏈(A→B→C),直接導向最終目標
  • 配合 rel="canonical" 標籤強化正規化

替代方案比較

方案優點缺點適用場景
PHP header()邏輯靈活、可動態判斷需啟動 PHP 解析器複雜條件判斷、應用層邏輯
Nginx/Apache 重寫效能極佳、無 PHP 開銷規則靜態、維護需重載大量固定規則、全站遷移
HTML meta refresh無伺服器端需求非真正 301、SEO 不友善靜態頁面、極特殊情況
JavaScript location可延遲、可追蹤搜尋引擎可能不跟隨前端路由、SPA 應用

掌握 PHP 301 重導向細節,配合 Web 伺服器層面規則,能構建健全的 URL 遷移策略,保護網站 SEO 資產。

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