8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un site multi-lingue et souhaiterais que les visiteurs soient rediriger en fonction de leur IP vers la version du site correspondant a leur pays.
Mon architecture du site est : monsite.com/francais

Je travail sur WordPress, j'ai telechargé GeoIP qui me recupere bien l'IP du visiteur, mais je ne sais pas comment utiliser les variable serveur auquel j'ai accès (qui contiennent les info dont j'ai besoin) pour rediriger mes pages...

Dans quel page dois-je mettre mon code de condition et comment faire les redirections?? je suis un peu perdue.....

Merci beaucoup!!!!
Tu as mod_geoip

Exemple du .htaccess à implémenter :

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Start Redirecting countries

# Canada
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$  http://ca.abcd.com$1  [L]

# India
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^IN$
RewriteRule ^(.*)$  http://in.abcd.com$1  [L]

# etc etc etc...
Merci beaucoup,

Toutefois est il possible de ne pas passer par les .htacces, mais par du php avec la variable serveur $_SERVER['GEOIP_COUNTRY_CODE'] qui contient le code du pays?
echo "Test Geo Ip <br><br>";
echo "IP: ".$_SERVER['REMOTE_ADDR']."<br>";
//Afficher l'adresse ip du visiteur

echo "GEOIP_AREA_CODE: ".$_SERVER['GEOIP_AREA_CODE']."<br>";
echo "GEOIP_CITY: ".$_SERVER['GEOIP_CITY']."<br>";
//Affiche La ville du visiteur

echo "GEOIP_COUNTRY_CODE: ".$_SERVER['GEOIP_COUNTRY_CODE']."<br>";
//Affiche le code pays du visiteur (fr,en,be par exemple)

echo "GEOIP_COUNTRY_NAME: ".$_SERVER['GEOIP_COUNTRY_NAME']."<br>";
//Affiche le pays du visiteur

echo "GEOIP_DMA_CODE: ".$_SERVER['GEOIP_DMA_CODE']."<br>";
echo "GEOIP_LATITUDE: ".$_SERVER['GEOIP_LATITUDE']."<br>";
//Affiche la latitude

echo "GEOIP_LONGITUDE: ".$_SERVER['GEOIP_LONGITUDE']."<br>";
//Affiche la longtitude

echo "GEOIP_REGION: ".$_SERVER['GEOIP_REGION']."<br>";
c'est exactement ces variables que je veux utiliser.

A quel endroit du code dois-je les mettre sous word press pour que la personne soit rediriger des son première instant sur le site?
surement dans function.php. (peut être que je me trompe à ce niveau là.)
je t'avoue que je suis plus enclin à utilisé le .htaccess.
Modifié par JENCAL (09 Nov 2015 - 14:19)
oui, je définirais aussi la fonction dans le fichier de fonction, mais ou est ce que j’appellerais la fonction en question?
alors là , faut que tu te familiarise avec les hook de wordpress.. ou peut etre dans wp-load.php
Bonsoir,

J'ai une question: pourquoi voulez-vous utiliser les adresse IP pour essayer de déterminer la langue du visiteur plutôt que de se baser sur l'en-tête HTTP Accept-Language envoyé par tout bon navigateur qui se respecte (y compris IE6), qui est exactement fait pour cela et qui est beaucoup plus fiable ?

Je peux vous expliquer très simplement pourquoi se baser sur les IP pour déterminer la langue est une mauvaise façon de faire: vous venez de détecter une IP suisse, que faites-vous ? Bravo, vous venez de me rediriger sur la version germanophone. Dans 30% des cas vous allez vous tromper. Le belge qui parle néérlandais se plaindra de la même chose... et tous les autres pays multilingues aussi. Et si je vais sur votre site depuis un wifi d'hôtel à l'autre bout du monde ça donne quoi ? Ah ben adieu le site, je pige tellement bien le chinois que je suis totalement incapable de changer la langue.

EDIT: Ah, et au passage, ce topic devrait être déplacé dans développement serveur; ça n'a rien à voir avec l'accessibilité.
Modifié par QuentinC (09 Nov 2015 - 20:43)
Administrateur
Sujet déplacé dans la bonne catégorie.

Effectivement, je pencherais plutôt comme QuentinC sur une détection par les bons en-têtes plutôt que l'adresse IP.
Sans doute pour ne rien dire de plus qu'effectivement la solution des entêtes est à privilégier:

$_SERVER['HTTP_ACCEPT_LANGUAGE']

Tu pourrais stocker les langues existantes de ton site dans un tableau et rediriger en fonction de la langue détectée.
Si aucune langue ne correspond aux langues gérées par ton site, alors tu rediriges vers une langue par défaut que tu auras choisi au préalable :

$langs     = array("fr", "en", "it");
$user_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0 , 2);

if (!in_array($user_lang, $langs))

	$user_lang = "en";

header("Location:  http://www.monsite.com/$user_lang/");
 

C'est un juste un exemple pour illustrer mes propos.
Merci pour vos réponses....

Je sais qu'il est plus logique de détecter la langue du navigateur du visiteur plutôt que son adresse Ip (c'est d’ailleurs la solution que j'ai actuellement), mais la j'ai une raison indépendante pour laquelle la redirection en fonction du pays m'est obligatoire.

J'ai finalement trouvé ma solution avec le plugin GeoIp, et fait ma redirection depuis le fichier .htacces
pour ceux que ca pourrais aidé une prochaine fois:

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^fr [NC]
RewriteRule ^$ /fr/ [R,L]
a écrit :
Je sais qu'il est plus logique de détecter la langue du navigateur du visiteur plutôt que son adresse Ip (c'est d’ailleurs la solution que j'ai actuellement), mais la j'ai une raison indépendante pour laquelle la redirection en fonction du pays m'est obligatoire.


Des raisons commerciales ?

Quoi qu'il en soit, essaie d'éviter l'amalgamme langue/pays si tu peux. C'est toujours gênant de tomber sur la mauvaise langue, que ce soit un site spécifique au pays ou pas. L'idéal serait donc que tu réagissent aux deux, en fonction autant de l'IP que de HTTP Accept-Language.
C'est la premier fois que j’entende de ce GeoIP
Moi j'avais le même besoin sur un site wordpress, j'avais programmer cela manuellement en se basant sur PHP/MYSQL uniquement Smiley smile