网站加载慢,根源竟在wp-config.php里的一行“死代码”
上周,客户老周的公司官网突然变得比蜗牛还慢,首屏要8秒,F12打开开发者工具,发现TTFB(首字节时间)高达6.2秒,我第一反应是CDN回源设置出了问题,但检查了Cloudflare配置,源站IP没错。
CDN回源配置错位,我的WordPress首页白屏403,5个核心问题一次拆解
真正的问题藏在根目录的wp-config.php里——有人为了“提速”,加上了一行define('WP_CACHE', true);,但网站根本没装任何支持这个常量的缓存插件,这就导致PHP进程每次请求都去尝试写文件缓存,但缓存目录不存在,于是反复IO报错。
解决方案:
- 注释或删除该行定义。
- 安装真正能配合
WP_CACHE的缓存插件,我推荐W3 Total Cache(免费版即可),但注意:它需要你手动在wp-config.php中设置define('WP_CACHE', true);,并且把wp-content/cache目录权限改为755,属主改为www:www。 - 若用Nginx,可在
nginx.conf中开启fastcgi_cache,再配合Nginx Helper插件自动清理。
缓存插件选错了,CDN与页面缓存互相打架
老周之前用的缓存插件叫“Super Cache”,它生成静态HTML文件,但CDN回源时抓取的是动态PHP,每次更新文章,CDN边缘节点上的旧HTML还在生效,导致后台编辑看不到变化。
选型与配置:
- 如果你用CDN(如Cloudflare或又拍云),强烈建议缓存插件换成WP Rocket(付费,约$59/年)——它默认分离移动端与桌面缓存,并支持“CDN集成”选项,重点:在
设置→CDN里填入你的CDN域名,并勾选“排除来自CDN的cookies”,否则登录状态下后台也会被CDN缓存。 - 若坚持免费,用LiteSpeed Cache(前提是你用LiteSpeed服务器),因为它在缓存层直接与服务器握手,不会和CDN产生二次缓存冲突。
暴力破解登录,wp-login.php被刷了20万请求
一个深夜,服务器CPU飙到100%,查看日志,发现/wp-login.php被来自十几个IP的脚本轰炸,老周用的密码是admin888,一分钟内就失守了。
防护三板斧:
- 修改默认登录入口:安装WPS Hide Login插件,把
wp-login.php改为/my-secret-door,同时在functions.php中禁用wp-login.php直接访问(返回404)。 - 限制IP请求频率:在Nginx层加
limit_req_zone,对登录接口限制每秒1个请求。 - 必须启用双因素认证:推荐MiniOrange Google Authenticator(免费版支持TOTP),别怕麻烦,这是最后一道闸门。
网站被挂马,首页跳转菠菜站
检测到wp-content/uploads/下多了一个theme-backup.zip,解压后是一堆加密PHP文件,排查流程:先检查wp-config.php中是否被插入了eval(base64_decode(...)),同时看.htaccess或Nginx配置里是否有SetHandler恶意指令。
清理恢复步骤:
- 立即下载程序文件与数据库备份,注意备份文件也可能带毒,务必用干净环境解压。
- 用Wordfence的“扫描”功能找出所有可疑文件(它比对官方哈希值)。
- 删除非核心目录下可写权限的PHP文件,尤其
uploads/里绝不能有可执行文件。 - 恢复
wp-config.php——用你手头干净副本覆盖,重新生成密钥(去WordPress官网生成新KEY)。 - 最后用iThemes Security(原Better WP Security)加固:禁用文件编辑器、折叠服务器端口、锁定
wp-admin目录。
垃圾评论淹没后台,误伤真用户
老周的后台积压了8000条垃圾评论,手动删除到手软,而CDN配置错误导致很多人用的是代理IP,导致反垃圾插件误封。
批量处理与防误伤:
- 安装Akismet Anti-Spam(官方免费,需API Key),把“评论审核”门槛设为:需至少1条已批准评论才能对外显示。
- 在数据库直接批量删除:SQL命令
DELETE FROM wp_comments WHERE comment_approved = 'spam';,但先备份。 - 关闭“允许对旧文章评论”功能,设置评论评论期限为30天自动关闭——这个在
设置→讨论里。
HTTPS证书部署失败,CDN回源协议错乱
老周在CDN控制台开启了“SSL Full (Strict)”,回源端口设为443,但服务器上证书只配置在CDN层,源站还是HTTP,于是浏览器看到证书正常,但CDN请求源站时握手失败,直接502。
正确部署姿势:
- 在服务器上执行
curl -I https://你域名,确认443端口证书正确签发(推荐Certbot自动续签)。 - 修改
wp-config.php加入两行:$_SERVER['HTTPS'] = 'on'; define('FORCE_SSL_ADMIN', true); - 将CDN回源协议改为“HTTP”或“HTTPS(但源站强制跳转)”,避免回源时出现循环重定向。
- 最后在Really Simple SSL插件里,勾选“强制固定URL”,并更新所有HTTP内容为HTTPS。
老周按这套流程走下来,网站3秒内打开,登录后台安静了,挂马痕迹清除,最后提醒一句:每次改完wp-config.php,记得先用php -l命令检查语法,再刷新页面——否则一个多余的分号,就是白屏的预告。



发表评论