Shopware云测试环境字体加载混合内容错误及路径异常求助
解决方案分析
问题根源
你的问题核心来自两个层面:
- 硬编码路径不匹配云环境部署结构:Shopware云环境的静态资源部署路径自带
/shop/public/前缀,而本地测试环境无此结构,直接使用/bundles/...的绝对路径会导致资源定位错误,进而触发浏览器混合内容拦截(虽当前请求显示为HTTPS,但路径错误可能引发资源加载异常,间接导致浏览器 fallback 到HTTP请求)。 - 版本差异适配问题:Shopware 6.4.17调整了静态资源的部署规则,与你本地使用的6.4.13-6.4.16.1版本存在差异,属于环境适配问题而非单纯的配置错误。
具体修复步骤
1. 替换硬编码路径为动态资源变量
不要直接写死绝对路径,改用Shopware提供的动态资源路径生成方式,确保路径适配本地与云环境:
修改fontname.scss中的@font-face规则,用Twig的{{ asset() }}变量生成正确路径:
@font-face { font-family: 'fontname'; font-style: normal; font-weight: 400; src: url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.eot') }}'); /* IE9 Compat Modes */ src: local(''), url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.eot?#iefix') }}') format('embedded-opentype'), /* IE6-IE8 */ url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.woff2') }}') format('woff2'), /* Super Modern Browsers */ url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.woff') }}') format('woff'), /* Modern Browsers */ url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.ttf') }}') format('truetype'), /* Safari, Android, iOS */ url('{{ asset('bundles/awesomebestappever/fontname/fontname-v17-latin-regular.svg#Caveat') }}') format('svg'); /* Legacy iOS */ }
若SCSS文件直接通过Webpack编译而非Twig渲染,需在
webpack.config.js中配置publicPath为云环境的资源前缀路径:/shop/public/。
2. 强制HTTPS加载的补充配置
若路径修正后仍存在混合内容问题,可通过以下方式确保HTTPS:
- 在Shopware后台商店设置 > 基本信息中,将商店URL设置为完整HTTPS格式,确保所有静态资源生成路径默认使用HTTPS。
- 若云环境允许修改配置,在
.htaccess中添加重写规则,强制静态资源跳转至HTTPS:
RewriteCond %{HTTPS} !=on RewriteRule ^bundles/(.*)$ https://%{HTTP_HOST}/shop/public/bundles/$1 [L,R=301]
- 登录Shopware云控制台,检查域名配置,开启强制HTTPS重定向功能。
3. 适配6.4.17版本的资源部署规则
Shopware 6.4.17对资源部署流程有调整,需确保插件资源正确同步:
- 执行
bin/console assets:install命令,将插件Resources/public目录下的资源复制到Shopware公共资源目录。 - 确认云环境的部署脚本包含
assets:install和theme:compile步骤,保证资源被正确编译与部署。
总结
这是本地与云环境部署结构差异叠加Shopware版本资源规则变化导致的问题,不属于单纯的配置错误。通过使用动态资源路径、配置HTTPS强制跳转,以及同步资源部署流程,即可解决字体加载的混合内容错误与路径问题。
内容的提问来源于stack exchange,提问作者Marc Cheng
相关产品推荐
相关产品推荐

