首页 > 解决方案 > 使用 .htaccess 语言重定向和手动语言选择器显示根 URL 时重定向到子文件夹

问题描述

提前道歉,因为它已经是与 .htaccess 重定向相关的详尽问题列表。我的问题涉及一个由多种语言版本组成的客户网站,文件夹结构如下:

index.html (default german version)
— en
  index.html
— fr
  index.html
— nl
  index.html
– css
– img
– js

说客户端现在要求我实现语言重定向,我通过将默认德语版本移动到它自己的子文件夹并将以下内容.htaccess放在根目录中来实现。

RewriteEngine On

# Redirect to dutch language version
RewriteCond %{HTTP:Accept-language} ^(nl.*) [NC]
RewriteRule ^$ /nl/ [L,R=302]

# Redirect to french language version
RewriteCond %{HTTP:Accept-language} ^(fr.*) [NC]
RewriteRule ^$ /fr/ [L,R=302]

# Redirect to english language version
RewriteCond %{HTTP:Accept-language} ^(en.*) [NC]
RewriteRule ^$ /en/ [L,R=302]

# Redirect all other languages to english language version
RewriteCond %{HTTP:Accept-language} !^(nl|fr|de|en).* [NC]
RewriteRule ^$ /en/ [L,R=302]

# Redirect to german language version
RewriteCond %{HTTP:Accept-language} ^(de.*) [NC]
RewriteRule ^$ /de/ [L,R=302]

重定向本身可以正常工作,并且不会与每个页面上的手动语言选择器冲突。我剩下的唯一问题是浏览器中显示的 URL 包含相应语言的子文件夹,即:

mydomain.com/de/
mydomain.com/en/
mydomain.com/fr/
mydomain.com/nl/

虽然这适用于非默认语言(即 en、fr 和 nl),但在访问默认德语版本时,URL 应显示根地址

mydomain.com
instead of
mydomain.com/de/

我需要如何修改我的.htaccess文件以实现所需的行为?我正在从站点服务器上的一个子文件夹中测试站点,dev因此建议的解决方案应该理想地使用mydomain.com等等dev.mydomain.com

首先十分感谢。

标签: apache.htaccessredirect

解决方案


推荐阅读