<?php
// 方法一:顯式發送狀態碼
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.example.com/");
exit;
// 方法二:一行搞定(推薦)
$url = 'https://www.example.com/';
header('Location: ' . $url, true, 301);
exit;
?>
| 狀態碼 | 含義 | SEO 影響 | 適用場景 |
|---|---|---|---|
| 301 | 永久移動 | 傳遞權重,搜索引擎更新索引 | 域名遷移、HTTPS 強制、目錄結構永久調整 |
| 302 | 臨時移動 | 不傳遞權重,保留原索引 | 臨時維護、A/B 測試、登錄跳轉 |
header() 前無任何輸出;或開啟 output_buffering。// 強制 HTTPS
if ($_SERVER['HTTPS'] !== 'on') {
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], true, 301);
exit;
}
// 多域名統一
$allowed = ['example.com', 'www.example.com'];
if (!in_array($_SERVER['HTTP_HOST'], $allowed)) {
header('Location: https://www.example.com' . $_SERVER['REQUEST_URI'], true, 301);
exit;
}
PHP 實現 301 重定向核心是 header('Location: ...', true, 301) 並立即 exit。注意輸出緩衝、瀏覽器緩存、URL 規範三大坑點,正確使用可平滑遷移 SEO 權重。