Заранее извиняюсь за то, что вы внесли свой вклад в исчерпывающий список вопросов, связанных с перенаправлениями .htaccess. Мой вопрос касается клиентского веб-сайта, состоящего из нескольких языковых версий, структура папок выглядит следующим образом:
index.html (default german version)
— en
index.html
— fr
index.html
— nl
index.html
– css
– img
– js
Теперь указанный клиент попросил меня перенаправить язык, что я и сделал, переместив немецкую версию по умолчанию в свою собственную подпапку и поместив следующий .htaccess
в каталог root .
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 должен показывать адрес root при посещении немецкой версии по умолчанию :
mydomain.com
instead of
mydomain.com/de/
Как мне нужно изменить мой .htaccess
файл для достижения желаемого поведения? Я тестирую сайт из подпапки на сервере сайтов с именем dev
, поэтому предлагаемое решение должно идеально работать с mydomain.com
и dev.mydomain.com
.
Заранее большое спасибо.