

这次问题的背景其实很简单:我用 MU Domain Mapping 给网站 wpzyh.com 绑定了另一个域名 wpzyh.wuaishare.cn,让两个域名都能访问同一站点。为了进一步提升未登录用户的访问速度,我在 WP Rocket 里开了预缓存,也为 A、B 两个域名准备了各自的 wp-content/wp-rocket-config 配置文件。结果却发现,B 域名的缓存页面里夹带了 A 域名的静态资源(wp-content/cache/min/ 下的 CSS/JS/字体),浏览器直接跨域报错,字体图标也就没法显示了。下面我会把原因、排查思路和修复方法讲清楚,方便你复现和解决。
一、问题现象与根因
现象
- 访问域名 B 时,HTML 缓存内容里出现
https://A域名/wp-content/cache/min/... - 浏览器报跨域,字体/图标等资源加载失败
根因(关键点)
WP Rocket 的 minify 资源 URL 是用 WP_CONTENT_URL 拼出来的。WP_CONTENT_URL 默认来自主站点域名,所以即便缓存按 host 分开了,minify 的资源链接仍然可能跑偏。
三、修复方案(推荐顺序)
方案 A:MU 插件强制使用当前访问域名(推荐)
优点:稳定、安全、不会影响主题更新
适用:多域名访问同站点
步骤(免费教程 登录后可免费查看)
方案 B:在 wp-config.php 动态设置缓存 URL
优点:更底层,效果彻底
缺点:需要改核心配置,维护成本略高
适用:服务器能访问 $_SERVER['HTTP_HOST'],并且你希望所有 WP Rocket 缓存资源都自动跟随当前域名。
方案 B 完整写法(可直接粘贴到 wp-config.php)
说明:把这段代码放在
wp-config.php里,必须在require_once ABSPATH . 'wp-settings.php';之前。
作用:让 WP Rocket 的缓存 URL 根路径跟随当前访问域名,避免 minify 资源被写成主域名。
(免费教程 登录后可免费查看)
方案 C:关闭 JS/CSS 压缩与合并
优点:操作最简单
缺点:性能优化少一些
适合临时排查或不想改代码的用户。
四、验证方式
- 访问 B 域名页面源代码
- 检查
/wp-content/cache/min/资源是否为 B 域名 - 控制台跨域错误是否消失
五、常见疑问
1)为什么 WP Rocket 最新版 也没有修复?
目前 WP Rocket 最新版 v3.20.2 的 minify URL 逻辑仍然使用 WP_CONTENT_URL,与 3.19.3 一致,所以问题不会自动消失。
2)MU 插件安全吗?
MU 插件优点是加载优先级高、不会被主题/插件更新覆盖,是我在生产环境里最常用的方案之一。

评论0 注意:评论区不审核也不处理售后问题!如有售后问题请前往用户中心提交工单以详细说明!