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

Typo3 11.5修改根域名默认重定向至次要语言的方法

解决TYPO3 11.5根域名重定向至英语页面的问题

核心需求回顾

  • 默认语言为德语(/de/),需保留后端编辑时的德语默认行为
  • 访问根域名example.com时,重定向至英语页面example.com/en/
  • 避免之前交换语言顺序导致的后端编辑限制,以及RewriteRule引发的无限重定向

解决方案步骤

1. 保留原有config.yml配置

不要调整语言顺序,确保德语保持为languageId: 0,这样后端默认编辑语言仍为德语:

base: /
languages:
  -
    title: Deutsch
    enabled: true
    languageId: 0
    base: /de/
    typo3Language: de
    locale: de_DE.utf8
    iso-639-1: de
    navigationTitle: Deutsch
    hreflang: de
    direction: ltr
    flag: de
  -
    title: Englisch
    enabled: true
    languageId: 1
    base: /en/
    typo3Language: default
    locale: en_US.utf8
    iso-639-1: en
    navigationTitle: English
    hreflang: en
    direction: ltr
    fallbackType: strict
    fallbacks: ''
    flag: en-us-gb

2. 修改.htaccess添加精准重定向规则

在TYPO3根目录的.htaccess文件中,找到重定向规则区域,添加以下规则(替换为你的实际域名):

# 处理根域名请求,直接重定向到英语首页
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ https://example.com/en/ [R=301,L]

# 处理无语言前缀的其他请求(如example.com/contact),重定向到对应英语路径
RewriteCond %{REQUEST_URI} !^/(de|en)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://example.com/en/$1 [R=301,L]

规则说明

  • 第一条规则专门匹配根域名的/请求,直接跳转到英语首页,避免误匹配其他路径
  • 第二条规则针对非文件、非目录且没有de/或en/前缀的请求,重定向到英语路径下的对应内容
  • 添加RewriteCond %{REQUEST_FILENAME} !-f和!-d是为了避免重定向静态文件(如图片、CSS)
  • 使用R=301表示永久重定向,若需要临时测试可改为R=307

为什么之前的规则会无限重定向?

你之前的规则RewriteRule !^(en|de)/ https://example.de/en [R=307,L]存在两个问题:

  1. 正则!^(en|de)/会匹配/en(因为路径是/en而非/en/),导致跳转后的请求再次触发规则,形成循环
  2. 没有排除静态文件和目录的请求,可能影响资源加载

通过添加精准的REQUEST_URI条件和排除文件/目录的判断,就能彻底解决无限重定向问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:30:21