2010-03-02 6 views
0

que je veux faire:utilisateurs Dévier à partir d'autres sites Web basés sur la langue du navigateur

if (user from other website, like google, or input our website URL directly in the browser) 
{ 
//redirect according to browser languge 
     if (!preg_match('/en-US/', $_SERVER['HTTP_USER_AGENT'])) 
     { 
     wp_redirect("http://cn.gearor.com"); 
    } 
} 

Je ne sais pas comment écrire la première instruction if, je ne sais pas comment obtenir l'URL et de comment vérifier c'est mon site Web ou d'autres sites Web. Si c'est mon site Web, ne faites rien, si ce n'est pas mon site Web, vérifiez si le navigateur est en anglais, sinon, redirigez vers http://cn.gearor.com

+1

Comme d'autres l'ont mentionné, l'en-tête accept est le bon endroit pour obtenir cette information, pas l'agent utilisateur et * surtout * pas la géolocalisation. Il est important de noter qu'il existe des paramètres régionaux en anglais autres que les États-Unis. – Zak

Répondre

2

Vous voulez quelque chose comme:

if (!preg_match('%your_domain.tld%i', $_SERVER['HTTP_REFERER'])) 
{ 
    if (!preg_match('/en-us/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) 
     // .. do your stuff here. 
} 

J'ai changé votre chèque de langue à utiliser HTTP_ACCEPT_LANGUAGE, et aussi ne pas être sensible à la casse (Opera utilise en États-Unis où Firefox et IE utilisent en-nous dans mes tests) . Vous pouvez également utiliser /^en-us/i si vous recherchez la langue DEFAULT. Les chaînes de langue peuvent contenir plusieurs langues, délimitées par des virgules.

+0

J'ai essayé de tester votre code en utilisant google pour accéder à mon site web, ça marche. Merci jasonbar. – Zack

2

$_SERVER['HTTP_REFERER'] est l'URL complète qui a mené à la page qui le vérifie. Ce n'est pas garanti, mais c'est le seul moyen de savoir ce que vous cherchez.

En outre, vous pouvez vérifier $_SERVER['HTTP_ACCEPT_LANGUAGE'] au lieu de $_SERVER['HTTP_USER_AGENT'] pour la langue de l'utilisateur.

Voici la matrice superglobale full reference to the $_SERVER. Vous devriez vérifier les clés, en particulier celles commençant par HTTP_.

Questions connexes