web-dev-qa-db-fra.com

Redirection de langue .htaccess avec des URL conviviales pour le référencement

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]
2
jlmmns

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]
7
Ravi Thapliyal

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]
0
jean-patrice nadeau