🛠实战记录:解决 WordPress 开启 CDN+HTTPS 后 “不安全” 提示及后台样式失效问题

一、问题背景

我将个人博客 jovis.site 接入腾讯云 CDN 并配置 HTTPS 证书后,遇到了两个典型的运维问题:

  • 前台浏览器地址栏持续显示「不安全」,控制台提示混合内容(Mixed Content)错误;
  • WordPress 后台 /wp-admin 页面完全丢失样式,变成纯文本列表状态,CSS/JS 资源全部加载失败。

作为从零开始学习 Linux 运维的新手,我完整记录了本次踩坑、排查、解决的全流程,方便后续复盘,也给遇到同样问题的朋友做个参考。

二、操作环境信息

项目详情
服务器腾讯云轻量应用服务器
操作系统Rocky Linux
Web 服务Nginx
博客程序WordPress
CDN 服务腾讯云 CDN
博客域名jovis.site
服务器 IP101.42.118.42

三、完整解决步骤

步骤 1:确认 CDN 与 HTTPS 证书基础配置

首先在腾讯云 CDN 控制台完成基础配置校验,排除证书本身的问题:

  1. 确认加速域名 jovis.site 已正确部署 SSL 证书,证书状态为「已生效」;
  2. 开启 HTTPS 强制跳转,将所有 HTTP 请求自动转发到 HTTPS;
  3. 开启 HSTS 配置,强制浏览器始终使用 HTTPS 访问。

步骤 2:安装 WP-CLI 工具(解决 wp 命令不存在报错)

最开始执行 wp 命令时,系统提示 command not found,原因是 Rocky Linux 系统默认没有预装 WordPress 命令行工具 WP-CLI,先完成安装:

# 1. 下载WP-CLI官方执行文件 sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar # 2. 赋予文件执行权限 sudo chmod +x wp-cli.phar
# 3. 移动到系统全局命令目录,实现任意位置可调用 sudo mv wp-cli.phar /usr/local/bin/wp
# 4. 验证安装是否成功 wp --version

执行后输出版本号,即代表 WP-CLI 安装完成。

步骤 3:批量替换数据库中的 HTTP 链接(核心修复)

问题的核心根源:WordPress 数据库中仍留存大量旧的 HTTP 链接,包括域名 HTTP 地址和服务器 IP 直连地址,导致浏览器拦截非 HTTPS 资源加载,出现混合内容错误和样式丢失。

通过 WP-CLI 执行全表批量替换,操作如下:

# 1. 切换到WordPress网站根目录(根据自己的实际路径调整) cd /var/www/html/wordpress 
# 2. 第一次替换:将域名的HTTP链接全部替换为HTTPS wp search-replace 'http://jovis.site' 'https://jovis.site' --all-tables
# 3. 第二次替换:将服务器IP的HTTP链接全部替换为HTTPS域名(关键!最容易遗漏) wp search-replace 'http://101.42.118.42' 'https://jovis.site' --all-tables

第二次替换执行完成后,系统提示 Success: Made 43 replacements.,这 43 处残留的 IP 链接,正是导致后台样式失效的核心原因。

步骤 4:修改 wp-config.php 强制全站 HTTPS

为了从根源上避免 WordPress 生成 HTTP 链接,在网站根目录的 wp-config.php 配置文件中,添加强制 HTTPS 的核心代码。

编辑配置文件

# 用root权限打开wp-config.php文件,避免权限不足导致保存失败 sudo vim /var/www/html/wordpress/wp-config.php

添加核心配置代码

在文件中找到 /* That's all, stop editing! Happy publishing. */ 这一行,在它的上方粘贴以下代码:

// 强制全站使用HTTPS协议 
define('WP_HOME', 'https://jovis.site');
define('WP_SITEURL', 'https://jovis.site');
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);

// 修复后台CSS/JS样式加载失败问题
define('CONCATENATE_SCRIPTS', false); define('SCRIPT_DEBUG', true);

步骤 5:收尾生效操作

1.重启 Nginx 服务,让配置文件修改生效:

sudo systemctl restart nginx

2.登录腾讯云 CDN 控制台,进入「缓存刷新」页面,提交 https://jovis.site/* 全目录刷新,清除 CDN 节点的旧缓存。

四、踩坑记录与解决方案

1:Vim 编辑文件时提示 E37 报错

报错信息E37: No write since last change (add ! to override)

报错原因

  1. 编辑的是 root 权限的系统配置文件,普通用户没有写入权限;
  2. Vim 检测到文件内容被修改,出于安全考虑提醒确认保存操作。

解决方案

  1. 编辑系统配置文件时,必须加上 sudo 获取 root 权限,从根源避免权限问题;
  2. 命令模式下,使用 :wq! 强制保存并退出(! 代表强制执行,忽略只读提醒);
  3. 若想放弃修改直接退出,使用 :q! 命令。

2:替换域名后仍有混合内容错误

问题原因:只替换了域名的 HTTP 链接,遗漏了最初建站时用服务器 IP 生成的文章、图片、资源链接,这些 IP 链接仍为 HTTP 协议,导致浏览器拦截。

解决方案:执行第二步的 IP→HTTPS 域名的全表替换,彻底清除所有非 HTTPS 链接。

五、最终验证效果

✅ 前台浏览器地址栏显示安全小锁图标,不再提示「不安全」;

✅ WordPress 后台恢复正常样式,所有 CSS/JS 资源加载正常;

✅ 全站所有图片、链接、资源均通过 HTTPS 协议加载,控制台无混合内容报错;

✅ 电脑端、手机端访问均正常,样式自适应无错乱。

六、本次学习知识点总结

1.WP-CLI 工具:

wp search-replace 是 WordPress 数据库批量替换的神器,比手动修改数据库更安全、更高效,支持全表扫描替换,避免遗漏。

2.Vim 基础操作

  • :1,$d:一键清空文件所有内容;
  • :wq:保存并退出;
  • :wq!:强制保存并退出;
  • :q!:放弃修改强制退出;
  • 编辑系统文件必须用 sudo 获取权限,避免保存失败。

3.WordPress HTTPS 配置核心

wp-config.php 中的 FORCE_SSL_ADMIN$_SERVER['HTTPS'] = 'on' 是强制后台使用 HTTPS 的关键,能从根源避免后台资源加载协议错误。

4.CDN 缓存注意事项:

修改网站配置、替换资源链接后,必须刷新 CDN 节点缓存,否则用户访问到的仍是旧内容,新配置无法立即生效。

滚动至顶部