Discuz 全站接入 CDN 后图片无法显示,通常是因为附件地址未替换为 CDN 域名或 CDN 防盗链策略拦截了正常请求。建议优先检查 CDN 控制台的 Referer 白名单设置,并在 Discuz 后台更新全局附件 URL 配置,注意避免后台管理界面被 CDN 缓存导致操作异常。
先说结论:Discuz 图片不显示多为路径未切换或防盗链拦截,需同步修改后台配置与 CDN 策略。
- 先确认 CDN 是否开启 Referer 防盗链且未添加本站域名白名单
- 先处理 Discuz 后台全局设置中的附件 URL 地址为 CDN 域名
- 再验证浏览器开发者工具中图片请求状态码是否为 200
快速处理思路
1. 登录 CDN 控制台,关闭防盗链或添加当前域名至白名单。
2. 登录 Discuz 后台,全局 > 上传设置,修改附件 URL 为 CDN 域名。
3. 清除浏览器缓存及 Discuz 缓存,刷新页面测试。
为什么会这样
Discuz 默认将附件路径写入数据库或生成 HTML 时使用源站域名,CDN 加速后若未更新路径,请求仍指向源站或触发 CDN 防盗链。CDN 节点默认可能开启防盗链功能,当请求头 Referer 不符合规则时返回 403 禁止访问,导致图片加载失败。
分步处理
步骤 1:检查 CDN 防盗链设置
进入 CDN 服务商控制台,找到防盗链配置项。若开启 Referer 白名单,必须添加 Discuz 站点域名及空 Referer 允许选项。若不确定策略,可暂时关闭防盗链测试。
步骤 2:更新 Discuz 附件 URL 配置
登录 Discuz 管理中心,进入“全局”>“上传设置”。找到“附件 URL 地址”或“图片 URL 前缀”,将源站域名修改为 CDN 加速域名。保存后需更新缓存。
步骤 3:排查 HTTPS 混合内容
若 CDN 启用 HTTPS 而站点仍为 HTTP,或反之,浏览器可能拦截加载。确保 Discuz 后台“全局”>“安全”中开启强制 HTTPS,且 CDN 证书有效。
怎么验证是否生效
打开浏览器开发者工具(F12),切换至 Network 标签页,刷新页面。观察图片资源请求状态,若显示 200 且 Size 不为 0 则正常。若显示 403 检查防盗链,若显示 404 检查路径配置。
常见坑
- 后台管理界面被 CDN 缓存,导致设置无法保存或页面错乱,建议后台域名不走 CDN。
- 头像图片使用独立接口,需单独确认 gravatar 或本地头像路径是否已切换。
- 静态化规则冲突,若开启 URL 静态化,需确保伪静态规则兼容 CDN 路径。
常见问题
为什么只有附件图片不显示,头像正常?
头像通常调用独立接口或默认使用相对路径,附件路径硬编码在内容中,需单独在后台更新附件 URL 配置。
CDN 配置后后台上传图片失败怎么办?
检查上传目录权限及 CDN 回源策略,确保后台上传请求能正确回源到源站服务器写入文件。
是否需要修改数据库中的旧图片链接?
若之前已使用绝对域名存储,需通过工具批量替换数据库中的旧域名为新 CDN 域名,否则旧内容仍指向原地址。