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

DjangoCMS多语言站点菜单语言异常:Googlebot抓取时显示英文

问题:站点前端显示德语,但Googlebot抓取时菜单显示英语

我运营着站点https://www.mobydisc.de/,它支持德语(DE)和英语(EN)两个版本。正常用浏览器访问时,全站内容都是德语;但用Google的抓取检查工具(Googlebot Fetch Details)测试时,页面主体内容是德语,可菜单却变成英语了,这该怎么解决?

当前配置

LANGUAGE_CODE = 'de'
TIME_ZONE = 'Europe/Berlin'
USE_I18N = True
USE_L10N = True
USE_TZ = True

CMS_LANGUAGES = {
    1: [
        {
            'code': 'de',
            'name': gettext('Deutsch'),
            'fallbacks': ['en'],
            'public': True,
        },
        {
            'code': 'en',
            'name': gettext('English'),
            'fallbacks': ['de'],
            'public': True,
            'hide_untranslated': True,
            'redirect_on_fallback':False,
        },
    ],
    'default': {
        'fallbacks': ['de'],
        'redirect_on_fallback':True,
        'public': True,
        'hide_untranslated': False,
    }
}

LANGUAGES = [
    ('de', 'Deutsch'),
    ('en', 'English'),
]

过滤器代码

@register.filter(name="get_menu_title_without_mega")
def get_menu_title_without_mega(text):
    if megamenu(text):
        # print("mega remove")
        regexp = re.compile("[ ]+mega[0-9]+$", re.MULTILINE)
        # print(text,regexp.sub("",text))
        return regexp.sub("",text)
    else:
        return text

排查方向与解决方案

从你的配置和现象来看,大概率是Googlebot的请求头触发了菜单的英语版本,而页面主体因为fallback设置正常显示德语。这里给你几个具体的解决思路:

  • 检查语言检测优先级:你的站点可能优先读取请求头里的Accept-Language字段,而Googlebot的请求头通常带有en相关标识。你可以调整语言解析逻辑,把站点默认语言(de)设为最高优先级,或者针对爬虫请求直接强制返回德语版本,避免被请求头误导。

  • 调整CMS语言配置:当前英语语言项的redirect_on_fallback设为False,而全局默认是True。可以尝试把英语的redirect_on_fallback改成True,确保当没有对应语言内容时,菜单也会 fallback 到德语版本。另外,检查菜单组件是否正确遵循了CMS的语言fallback规则,有没有独立的语言判断逻辑。

  • 验证菜单数据源:菜单的内容可能来自独立的语言版本条目,而页面主体用了全局fallback。你需要确认菜单的渲染逻辑是不是在请求语言为德语时,确实读取的是德语菜单数据,而不是错误地加载了英语版本。

  • 明确hreflang标签:在页面头部添加清晰的hreflang标签,告诉Google各个语言版本的对应关系,比如:

    <link rel="alternate" hreflang="de" href="https://www.mobydisc.de/" />
    <link rel="alternate" hreflang="en" href="https://www.mobydisc.de/en/" />
    <link rel="alternate" hreflang="x-default" href="https://www.mobydisc.de/" />
    

    这能帮助Googlebot正确识别默认的德语版本,减少语言判断错误。

  • 模拟爬虫请求测试:用curl模拟Googlebot的请求,看看返回内容是否符合预期:

    curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -H "Accept-Language: en-US,en;q=0.9" https://www.mobydisc.de/
    

    如果返回的菜单确实是英语,那就坐实了是请求头的问题,接下来针对性调整语言解析逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:06:29