網站更換域名(如 jb51.cn → jb51.net),目錄結構完全一致,需將舊域名所有 404 頁面自動導向新域名對應路徑。
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="GB2312">
<title>頁面遷移中...</title>
<meta http-equiv="refresh" content="5; url=https://www.jb51.net<?= $_SERVER['REQUEST_URI'] ?>">
<style>
body {font-family: Microsoft JhengHei, sans-serif; text-align:center; padding-top: 50px;}
.btn {display:inline-block; margin-top:20px; padding:10px 20px; background:#007bff; color:#fff; text-decoration:none; border-radius:4px;}
</style>
</head>
<body>
<h1>本站已啟用新域名</h1>
<p>您訪問的舊地址:<code>https://www.jb51.cn<?= htmlspecialchars($_SERVER['REQUEST_URI']) ?></code></p>
<p>系統正為您跳轉至:<code>https://www.jb51.net<?= htmlspecialchars($_SERVER['REQUEST_URI']) ?></code></p>
<p><a class="btn" href="https://www.jb51.net<?= $_SERVER['REQUEST_URI'] ?>">立即跳轉</a></p>
<p>或等待 5 秒自動跳轉...</p>
</body>
</html>
ErrorDocument 404 /404.php
server {
listen 80;
server_name www.jb51.cn;
root /var/www/old_site;
location / {
try_files $uri $uri/ /404.php;
}
# 確保 PHP 處理 404.php
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
若舊域名仍解析到同一伺服器,建議直接在 Web 伺服器層做 301,無需 PHP 處理:
# Nginx
server {
server_name www.jb51.cn;
return 301 https://www.jb51.net$request_uri;
}
# Apache
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.jb51\.cn$ [NC]
RewriteRule ^(.*)$ https://www.jb51.net/$1 [R=301,L]
| 方案 | HTTP 狀態 | SEO 權重傳遞 | 適用場景 |
|---|---|---|---|
| Web Server 301 | 301 Moved Permanently | 完全傳遞 | 域名遷移、結構不變、舊域名仍可控 |
| PHP 404 + Meta Refresh | 404 Not Found → 200 OK | 不傳遞(視為新頁) | 舊域名已失控、需保留舊站部分功能、無法配置 Web Server |