HTTP 301 永久重導向是網站遷移、域名整理、URL 正規化的關鍵技術。正確實作不僅能保持用戶體驗,更能傳遞 SEO 權重。本文詳細說明 PHP header 重導向技巧、常見場景與注意事項。
<?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('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: *'); |
echo、HTML 空白、BOM 都會導致 "Headers already sent" 錯誤Location: URL 冒號後需有空格,URL 建議使用絕對路徑rel="canonical" 標籤強化正規化| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| PHP header() | 邏輯靈活、可動態判斷 | 需啟動 PHP 解析器 | 複雜條件判斷、應用層邏輯 |
| Nginx/Apache 重寫 | 效能極佳、無 PHP 開銷 | 規則靜態、維護需重載 | 大量固定規則、全站遷移 |
| HTML meta refresh | 無伺服器端需求 | 非真正 301、SEO 不友善 | 靜態頁面、極特殊情況 |
| JavaScript location | 可延遲、可追蹤 | 搜尋引擎可能不跟隨 | 前端路由、SPA 應用 |
掌握 PHP 301 重導向細節,配合 Web 伺服器層面規則,能構建健全的 URL 遷移策略,保護網站 SEO 資產。