WordPress 和 HTTPS 通常配合順暢——但當出問題時,錯誤可能令人困惑。本指南涵蓋每個常見的 WordPress SSL 問題及其修復方法。
如需初始 SSL 設定,參見我們的 WordPress SSL 安裝指南。
ERR_TOO_MANY_REDIRECTS(重新導向迴圈)
WordPress SSL 的第一大問題。 瀏覽器顯示”該頁面無法正常工作——將你重新導向了太多次”。
原因 1:在代理後面(Cloudflare、負載均衡器)
代理終結 SSL 並向 WordPress 轉發 HTTP。WordPress 看到 HTTP 就重新導向到 HTTPS。代理再次轉發 HTTP。無限迴圈。
修復 — 在 wp-config.php 中新增(在 /* That's all, stop editing! */ 之前):
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
如果使用 Cloudflare: 同時將 SSL 模式設為”Full”或”Full (Strict)“——絕不要用”Flexible”。
原因 2:重新導向衝突
你的 .htaccess 重新導向到 HTTPS,同時 WordPress 外掛(如 Really Simple SSL)也在重新導向,同時你的伺服器配置也在重新導向。三重重新導向 = 迴圈。
修復: 只保留一個重新導向來源。推薦:.htaccess 重新導向,禁用外掛重新導向。
原因 3:WordPress URL 不匹配
设置 → 常规 顯示 http:// 但你的伺服器強制 HTTPS。
修復 — 透過 wp-config.php 更新:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
混合內容警告(鎖頭圖示損壞/缺失)
HTTPS 正常工作但鎖頭圖示顯示警告,或某些資源載入不了。
原因: 頁面引用了 http:// URL 的圖片、指令碼或 CSS——通常是遷移前儲存在資料庫中的。
快速修復:Really Simple SSL 外掛
安裝並啟用 Really Simple SSL——它動態改寫 http:// URL 並新增 upgrade-insecure-requests CSP 頭。
永久修復:資料庫搜尋替換
# WP-CLI (recommended)
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
# Dry run first to see what changes
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --dry-run
或使用 Better Search Replace 外掛獲取圖形介面。
同時檢查:
- 主題檔案(
header.php、footer.php)中硬編碼的http://URL - 小工具內容(文字小工具、自定義 HTML)
- 自定義 CSS(外觀自定義器中)
- 外掛設定(社交分享圖片、Logo URL)
啟用 HTTPS 後白屏 / 500 錯誤
原因 1:.htaccess 衝突
HTTPS 重新導向規則與 WordPress 的固定連結規則衝突。
修復: 重置 .htaccess:
# Rename the current one
mv .htaccess .htaccess.backup
# WordPress regenerates it
# Go to Settings → Permalinks → Save (no changes needed)
然後在頂部重新新增 HTTPS 重新導向:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
原因 2:外掛衝突
安全或快取外掛可能與 HTTPS 更改衝突。
修復: 透過 FTP 禁用所有外掛:
# Rename the plugins directory
mv wp-content/plugins wp-content/plugins.bak
如果網站恢復正常,重新命名回來並逐個啟用外掛找出衝突。
啟用 HTTPS 後無法登入 wp-admin
原因:Cookie 域名不匹配
為 http:// 設定的舊 Cookie 在 https:// 上不工作。
修復:
// Add to wp-config.php
define('FORCE_SSL_ADMIN', true);
define('COOKIE_DOMAIN', 'yourdomain.com');
然後清除瀏覽器中該域名的 Cookie,或嘗試隱身視窗。
SSL 證書已安裝但 WordPress 仍顯示 HTTP
原因:WordPress 不知道 HTTPS
證書在伺服器上,但 WordPress 的 URL 設定仍然是 http://。
修復: 更新兩個 URL:
- 如果你能訪問 wp-admin: 設定 → 常規 → 將兩個 URL 改為
https:// - 如果你無法訪問 wp-admin: 在
wp-config.php中新增:define('WP_HOME', 'https://yourdomain.com'); define('WP_SITEURL', 'https://yourdomain.com'); - 如果 wp-config.php 也不行: 直接更新資料庫:
UPDATE wp_options SET option_value = 'https://yourdomain.com' WHERE option_name IN ('siteurl', 'home');
Elementor / 頁面構建器在 HTTPS 上佈局損壞
頁面構建器在 post meta 中儲存絕對 URL。遷移到 HTTPS 後執行:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables
對於 Elementor,還要前往 Elementor → Tools → Replace URL 並從 http:// 更新到 https://。
WooCommerce 結賬在 HTTPS 上不工作
原因 1:混合內容阻止支付指令碼
Stripe、PayPal 和其他支付閘道器要求 HTTPS 並拒絕透過混合內容載入。
修復: 執行資料庫搜尋替換(上文),檢查 WooCommerce → Settings → Payments 中的 http:// 引用。
原因 2:強制 SSL 結賬設定
WooCommerce 有一個”Force secure checkout”選項,可能與全站 HTTPS 衝突。
修復: 如果你整個網站都是 HTTPS,你不需要這個選項。在 WooCommerce → Settings → Advanced → Page setup 中取消勾選它。
常見問題
需要 Really Simple SSL 外掛嗎?
它讓 HTTP→HTTPS 過渡更容易(特別是混合內容),但不是必需的。如果你執行了資料庫搜尋替換並在 .htaccess 中設定了重新導向,就不需要該外掛。外掛在每次頁面載入時都有少量開銷,因為它動態改寫 URL。
應該在安裝證書之前還是之後更改 WordPress URL?
之後。 先安裝證書並驗證 HTTPS 正常工作。然後更新 WordPress URL。如果在證書準備好之前更新 URL,WordPress 嘗試提供 HTTPS 但做不到——你可能會把自己鎖在外面。
快取外掛提供舊的 HTTP 版本
遷移後清除所有快取:
- WP Super Cache / W3 Total Cache / LiteSpeed Cache: 從外掛設定中清除快取
- Cloudflare: Purge Everything
- 服務端快取(Varnish、Nginx cache): 清除快取或重啟服務
幾個月前遷移了但 Google 仍然顯示 HTTP URL
在 Google Search Console 中提交你的 HTTPS 站點地圖。檢查所有頁面的 <link rel="canonical"> 標籤指向 https://。Google 可能需要數週時間重新索引——301 重新導向有幫助但不是即時的。