Paramètre GET transmis via un sous-domaine .htaccess non lu par php

Scénario

J’ai le code suivant:

test.php

"This is a test.","it"=>"Questo è un test."); echo $content[$lang]; } ?> 

.htaccess

 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^\.localhost$ RewriteRule (.*) - [QSA,E=LANG:%1] RewriteRule (.*) $1?lang=%{ENV:LANG} [QSA] 

Ce que mon code devrait faire

Si $ _GET [‘lang’] n’est pas défini, récupère la langue de l’utilisateur à partir des en-têtes envoyés par son navigateur et les redirige vers le sous-domaine correspondant à leur langue: le sous-domaine doit coïncider avec $ _GET [‘lang’].

Ce qui ne fonctionne pas

En visitant localhost / test.php, je suis redirigé vers le bon sous-domaine, mais la redirection se poursuit sans fin. De plus, si je visite en.localhost / test.php et que ma langue est l’italien, je suis redirigé vers it.localhost / test.php avant la boucle.

Ma question

Comment puis-je résoudre ce problème?

Vous pouvez utiliser:

 RewriteEngine On RewriteBase / RewriteCond %{HTTP:Accept-Language} ^([az]{2}) [NC] RewriteRule ^ - [E=LANG:%1] RewriteCond %{QUERY_STRING} !(?:^|&)lang= [NC] RewriteCond %{HTTP_HOST} ^(?:[^.]+\.)?(localhost)$ RewriteRule (.*) http://%{ENV:LANG}.%1/$1?lang=%{ENV:LANG} [QSA,L,R=302] 

Test.php :

 "This is a test.","it"=>"Questo è un test."); echo $content[$lang]; ?>