You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Winter CMS站点迁移后img标签src显示unknown问题咨询

Winter CMS迁移后img标签src显示unknown的问题解决

问题根因

同一段Twig资源输出语法,写在<p>标签内可以正常返回路径、写在img的src属性里被替换为unknown,核心原因是Winter CMS的渲染安全策略对HTML属性和标签文本的过滤规则不一致,迁移后触发该问题基本对应以下三种场景:

  • 新环境默认开启CMS安全模式(Safe Mode):该模式下渲染引擎会对src、href这类可加载外部资源的HTML属性做强制校验,属性值如果是动态输出的Twig语法而非硬编码静态路径,会直接被替换为unknown拦截;标签内部的文本内容不触发资源加载校验规则,因此同一段语法放在p标签内可以正常解析输出。
  • 代码写在后台富文本编辑器/静态页面插件的可视化编辑区:Winter默认的富文本内容净化规则,会自动转义、过滤HTML属性内的Twig占位符,但不会处理标签文本节点内的Twig代码,直接造成属性内语法失效、文本内语法正常的现象。
  • Twig编译缓存未清理:迁移后仅刷新了页面缓存,旧的错误编译模板残留在storage/twig目录下,恰好属性部分的编译缓存未更新、文本部分缓存触发了重编译。

修复步骤

  1. 关闭安全模式验证
    打开项目根目录config/cms.php,找到enableSafeMode配置项,将值改为false:
    'enableSafeMode' => false,
    
    修改后直接删除storage/cache、storage/twig两个目录下的所有文件,手动清空编译缓存后刷新页面测试。
  2. 富文本场景加raw过滤器
    如果代码是写在富文本编辑区,先切换到纯代码编辑模式插入img标签,给Twig输出追加|raw过滤器,告知渲染引擎不要对该段输出做转义、过滤处理:
    <img src="{{ 'assets/images/logos/logo.png'|theme|raw }}" alt="Logo" class="img-fluid">
    
  3. 根路径校验(低优先级)
    如果以上操作后src已经输出正确路径但图片仍无法加载,检查新服务器的站点根目录配置:确保Winter入口文件index.php所在目录为站点web根目录,不存在项目套二级目录导致的路径解析偏差,同时检查主题资源目录的文件权限,保证web运行用户对themes/[你的主题名]/assets/下的文件有可读权限。

注:早期部分Winter版本存在theme过滤器在属性内解析异常的bug,若以上操作都无效,可以尝试升级Winter CMS到最新稳定版,一般可以直接修复该类解析问题。

内容的提问来源于stack exchange,提问作者ja_gallagher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:01:21