萬盛學電腦網

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

新浪 SAE/BAE 域名 301 重定向配置指南:config.yaml、app.conf 與 PHP 兜底方案

場景:舊域名遷移至新域名,需保留 SEO 權重

網站從新浪 SAE 遷移至自有域名,舊域名(如 101ban.sinaapp.com)仍可訪問,會造成內容重複、權重分散。必須實施 301 永久重定向,告知搜尋引擎網址永久變更。

方案一:SAE 平台 config.yaml 重寫規則(推薦,效能最佳)

SAE 使用 AppConfig 語法,在 config.yaml 中定義 handle 區塊:

handle:
  - rewrite: if(in_header["host"] ~ "^101ban\.sinaapp\.com" && path ~ "^(.*)$") goto "https://新域名/hongzhiban$1 [L,QSA,R=301]"

語法解析

  • in_header["host"]:匹配請求 Host 頭
  • ~:正則匹配運算子
  • path ~ "^(.*)$":捕獲完整路徑至 $1
  • goto:重導向目標,支援 Apache 風格旗標:
    • L (Last) 停止後續規則
    • QSA (Query String Append) 保留原查詢字串
    • R=301 發送 301 狀態碼

方案二:BAE 平台 app.conf(實測可能不生效)

BAE 同樣支援重寫規則,但實測 app.conf 修改有時不生效,建議改用應用層 PHP 方案。

方案三:PHP 通用兜底方案(適用任何環境)

在入口檔案(如 WordPress header.php、框架 index.php、公共 config.php)最頂部加入:

<?php
// 定義標準域名
$canonical_host = 'www.111cn.net';

if ($_SERVER['SERVER_NAME'] !== $canonical_host) {
    // 保留原路徑與查詢字串
    $redirect_url = 'https://' . $canonical_host . $_SERVER['REQUEST_URI'];
    
    header('HTTP/1.1 301 Moved Permanently');
    header("Location: $redirect_url");
    exit;  // 關鍵:阻止後續輸出
}
?>

關鍵點說明

  1. 使用 $_SERVER['SERVER_NAME'] 而非 HTTP_HOST,前者為伺服器配置值,較難偽造。
  2. 保留 REQUEST_URI 確保深層連結正確跳轉(如 /article/123 → /article/123)。
  3. 發送 HTTP/1.1 301 明確告知永久遷移。
  4. exit 而非 die():語義更清晰,效果相同。
  5. 放在最頂部:任何輸出(含空白、BOM)會導致 header() 失效。

WordPress 專屬整合建議

編輯主題 functions.php(優於 header.php,不受主題更新影響):

<?php
add_action('template_redirect', 'force_canonical_domain');
function force_canonical_domain() {
    $canonical = 'https://www.111cn.net';  // 建議強制 HTTPS
    $current = (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    
    if (strpos($current, $canonical) !== 0) {
        wp_redirect($canonical . $_SERVER['REQUEST_URI'], 301);
        exit;
    }
}
?>

驗證重定向是否生效

# 命令列測試
curl -I https://101ban.sinaapp.com/some/page

# 預期回應
HTTP/1.1 301 Moved Permanently
Location: https://www.111cn.net/hongzhiban/some/page
...
Content-Type: text/html; charset=UTF-8

SEO 後續工作

  • 📝 在 Google Search Console / 百度站長平台提交「網站改版」
  • 🗂️ 更新 sitemap.xml 為新域名
  • 🔗 通知重要外鏈來源更新連結
  • 📊 監控 404 錯誤、收錄量變化 3-6 個月

總結

SAE 首選 config.yaml 重寫(效能最好、無 PHP 開銷);BAE 若配置不生效、或通用部署環境,PHP 兜底方案可靠且可攜帶。核心原則:301 永久、保留路徑、頂部執行、及時退出。配合搜尋引擎站長工具提交改版,可最大程度保留 SEO 資產。

copyright © 萬盛學電腦網 all rights reserved