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]存在两个问题:
- 正则
!^(en|de)/会匹配/en(因为路径是/en而非/en/),导致跳转后的请求再次触发规则,形成循环 - 没有排除静态文件和目录的请求,可能影响资源加载
通过添加精准的REQUEST_URI条件和排除文件/目录的判断,就能彻底解决无限重定向问题。
内容的提问来源于stack exchange,提问作者n1klas
相关产品推荐
相关产品推荐

