Craft CMS 4多语言最佳实践:URL规范与索引问题咨询
Craft CMS多语言URL索引问题的解决建议
核心问题梳理
- 当前默认语言存在两套可访问的URL结构:带locale(如
/en/about)和不带locale(如/about),导致谷歌重复索引相同内容 - Craft CMS未自动将无locale的请求(如根域名、
/about)重定向到默认语言的带locale URL
要不要移除默认语言URL中的locale?
别这么做。虽然看似能解决当前索引问题,但会带来更多麻烦:
- URL结构不一致会大幅增加后续维护成本,比如模板、路由规则需要单独区分处理两种结构
- 已收录的带locale链接若未做301重定向,反而会新增更多重复索引内容
正确的解决步骤
强制重定向无locale请求到默认语言版本
- 可以通过Craft的SEO类插件(比如SEOmatic)实现,或者直接在服务器配置(Nginx/Apache)中添加重定向规则
- Nginx规则示例:
if ($request_uri !~ "^/(en|nl)/") { return 301 $scheme://$host/en$request_uri; } - 确保根域名直接跳转到
/en,所有无locale的页面路径都301到带/en的对应地址
配置规范的hreflang标签
- 在页面
<head>中添加hreflang标签,明确告知谷歌各语言页面的对应关系,避免误判为重复内容 - 代码示例:
<link rel="alternate" hreflang="en" href="https://你的域名/en/about"> <link rel="alternate" hreflang="nl" href="https://你的域名/nl/about"> <link rel="alternate" hreflang="x-default" href="https://你的域名/en/about">
- 在页面
在谷歌搜索控制台完成收尾
- 将所有带locale的规范URL提交到搜索控制台,并标记
/en版本为默认语言 - 使用搜索控制台的移除工具清理已收录的无locale重复页面
- 将所有带locale的规范URL提交到搜索控制台,并标记
内容的提问来源于stack exchange,提问作者Matthias
相关产品推荐
相关产品推荐

