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 重定向有帮助但不是即时的。