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

多语言Craft CMS站点次要语言下Live Preview功能异常求助

Craft CMS多语言站点Live Preview次要语言加载错误修复方案

以下是可直接落地的排查修复步骤:

  • 修正Preview Targets绑定规则
    不要使用硬编码的en/news/{slug}格式配置预览目标,正确配置逻辑为:
    1. 进入对应Section的设置页面,切换到「Preview Targets」标签
    2. 删除原有手动填写语言前缀的预览条目,新增两个独立预览目标
    3. 第一个目标关联主语言站点,URL格式填写{uri},勾选「Primary」
    4. 第二个目标关联次要语言站点,URL格式同样填写{uri},无需手动拼接语言前缀,Craft会自动读取对应站点的Base URL完成路径拼接
  • 校验站点Base URL配置
    进入「设置 > 站点」分别检查两个站点的配置项:
    1. 主语言站点的Base URL字段确认填写$PRIMARY_SITE_URL
    2. 次要语言站点的Base URL字段确认填写$PRIMARY_SITE_URL_EN
    3. 保存配置后清空Craft全站缓存
  • 排查环境变量读取异常问题
    可临时将次要语言站点的Base URL替换为硬编码值http://mysite.local:8080/en/测试,若预览恢复正常,说明.env变量存在读取异常,检查文件权限、变量命名是否存在拼写错误
  • 修复多站点入口匹配逻辑
    如果你使用单入口文件配置多站点,需要在public/index.php中添加路径匹配逻辑,根据请求前缀自动指定对应站点的handle,参考代码:
    // 加在引导Craft启动前
    $currentPath = $_SERVER['REQUEST_URI'] ?? '';
    $siteHandle = 'default'; // 替换为你的主语言站点handle
    if (str_starts_with($currentPath, '/en/')) {
        $siteHandle = 'en'; // 替换为你的次要语言站点handle
    }
    \Craft::$app->request->setSiteHandle($siteHandle);
    
    若使用多入口配置,确认次要语言的入口文件中已通过CRAFT_SITE常量指定了对应站点的handle
  • 校验通用配置限制
    检查config/general.php中的allowedHosts配置项,确认已同时添加主站和次要语言站点的域名,避免预览请求被安全规则拦截

所有配置修改完成后,清空全站缓存、退出后台重新登录,再次测试次要语言的Live Preview功能即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:15:07