Comment configurer mon fichier . Htaccess pour détecter plusieurs langues et les rediriger vers des URL spécifiques compatibles avec le référencement?
Fondamentalement, chaque URL doit aller à index.php?lang=(...)
.
Donc, pour anglais la détection de la langue http://mysite.com
doit aller à http://mysite.com/en/
(index.php?lang=en
).
Mon . Htaccess à partir de maintenant (ne fonctionne pas):
RewriteEngine On
RewriteCond %{HTTP:Host} http://mysite.com/
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|de|nl|fr|es)$ index.php?lang=$1 [L,QSA]
Tu y es presque. Déposez le tout premier RewriteCond
(car ce n'est pas obligatoire et ne correspondra jamais) et ajoutez un /
final à votre dernier RewriteRule
puisque vous redirigez avec eux.
RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]
Voici mon code pour les paramètres de langue et de pays. Cela supporte n'importe quelle langue:
#www.country.com/index.html becomes www.country.com/index.php
#www.country.com/fr/index.html becomes www.country.com/index.php?language=fr
#www.country.com/ca/fr/index.html becomes www.country.com/index.php?country=ca&language=fr
RewriteRule ^([a-zA-Z]{2})/([a-zA-Z]{2,3})/index\.html$ index.html?country=$1&language=$2
RewriteRule ^([a-zA-Z]{2,3})/index\.html$ index.html?language=$1
RewriteRule ^index\.html$ /index.php [L]