WordPress 搬家改網域:用 WP-CLI 安全執行搜尋取代與回復

公司網站從測試網址搬到正式網域,或從 HTTP 改成 HTTPS 後,最常見的問題是首頁正常,文章圖片、按鈕、選單或外掛設定卻仍指向舊網址。直接在資料庫執行 SQL 的文字取代很危險,因為 WordPress 部分資料採用序列化格式,字串長度改變後可能讓設定損壞。

以下使用免費的 WP-CLIwp search-replace,在主機上安全處理網址搬移。範例假設舊網址是 https://staging.example.com,新網址是 https://www.example.com。正式操作前,請先確認你有主機 SSH 權限、網站檔案備份與資料庫備份。

先安裝並確認 WP-CLI

多數 WordPress 主機已經提供 WP-CLI。登入主機後,切換到 WordPress 根目錄,再執行:

cd /var/www/html
wp --info
wp core is-installed

看到 WP-CLI 版本、PHP 版本,且 wp core is-installed 沒有錯誤,代表目前目錄就是可操作的 WordPress。若主機沒有 WP-CLI,請依照 WP-CLI 官方安裝說明安裝;不要從不明網站下載執行檔。

第一步:備份並先預覽結果

先建立一份資料庫匯出檔。檔名加上日期,方便之後辨識:

wp db export ../before-search-replace-20260908.sql

接著只預覽會被修改的資料,不真正寫入:

wp search-replace \
  'https://staging.example.com' \
  'https://www.example.com' \
  --all-tables-with-prefix \
  --skip-columns=guid \
  --dry-run

--dry-run 會顯示預計修改的資料表與筆數,但不會寫入資料庫。--all-tables-with-prefix 可處理相同 WordPress 前綴的資料表;若主機內有多個網站,請先確認資料表前綴,避免改到其他網站。這個指令不建議修改 guid,所以範例使用 --skip-columns=guid

第二步:執行搜尋取代

確認預覽結果只包含目標網站,並確認新舊網址拼寫完全正確後,移除 --dry-run 再執行一次:

wp search-replace \
  'https://staging.example.com' \
  'https://www.example.com' \
  --all-tables-with-prefix \
  --skip-columns=guid \
  --report-changed-only

WP-CLI 會處理常見的序列化資料,比直接用 SQL 取代安全。不過它仍然可能修改大量外掛設定,因此不要在尖峰時段執行。若網站使用多站網路、特殊資料表或外部服務,請先確認該服務是否保存完整網址。

成功驗證:不要只看指令完成

先檢查網站設定中的網址:

wp option get home
wp option get siteurl

兩個值都應該是新網址。接著重新整理固定網址規則:

wp rewrite flush

最後用瀏覽器測試首頁、文章、圖片、聯絡表單與登入頁,並搜尋頁面原始碼或資料庫是否仍有舊網域:

wp search-replace \
  'https://staging.example.com' \
  'https://www.example.com' \
  --all-tables-with-prefix \
  --skip-columns=guid \
  --dry-run

這次預覽若顯示沒有可修改資料,通常代表主要網址已完成取代。若仍有舊網址,先檢查是否存在不同的尾端斜線、HTTP 與 HTTPS 混用,或資料放在沒有相同前綴的自訂資料表。

常見錯誤、安全限制與回復

  • 找不到 wp 指令:確認 WP-CLI 已安裝,或使用主機商提供的完整路徑。
  • 資料庫連線失敗:檢查目前目錄是否正確,以及 wp-config.php 的資料庫設定;不要直接修改密碼測試。
  • 網站出現重新導向循環:檢查主機、反向代理與 WordPress 是否同時強制 HTTP 或 HTTPS,先清除快取再測試。
  • 改錯網址或外掛設定異常:先啟用維護頁面,再使用備份回復資料庫:wp db import ../before-search-replace-20260908.sql。匯入前要確認目前資料庫名稱,避免覆蓋錯誤網站。
  • 安全限制:不要把 SQL 備份放在網站公開目錄,也不要把含資料庫密碼的終端機畫面或備份檔提交到 Git。操作完成後,將備份移到受限制的儲存位置。

若搬家同時涉及檔案、資料庫與 DNS,建議先閱讀站內的WordPress 備份與還原實務,並留意 wp_options 中可能影響網站網址與外掛設定的資料。完成切換後保留原始備份與操作紀錄,觀察一段時間確認表單、登入及快取都正常,再清理舊環境。

參考來源

相連文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *