Maison  >  Questions et réponses  >  le corps du texte

Rediriger le TLD en fonction du pays de l'utilisateur

Je ne crois pas que cela soit possible avec .htaccess. J'ai plusieurs domaines :

domain.mx
domain.com
domain.ca

Je souhaite forcer la localisation d'un TLD en fonction de l'emplacement de l'utilisateur. Si un utilisateur vient du Mexique et visite domain.com/test/a/, il sera dirigé vers domain.mx/test/a lors de sa première visite. À partir de là, le site Web conservera automatiquement l'utilisateur en .mx

C'est ma solution PHP actuelle, mais je ne sais pas si la réécriture des règles est possible ou plus rapide :

add_action( 'template_redirect', 'my_callback' );
function my_callback() {
 $userCountry = $_SERVER["HTTP_CF_IPCOUNTRY"];
 $baseurl = $_SERVER[HTTP_HOST];
 $url = $_SERVER[REQUEST_URI];
 
          // Mexico
     if (($userCountry == "MX") && (strpos($baseurl, 'mx') == false)) {
     $newurl = "https://domain.mx" . $url;
     wp_redirect( $newurl, 301 );
     exit();
 }

P粉761718546P粉761718546257 Il y a quelques jours389

répondre à tous(1)je répondrai

  • P粉477369269

    P粉4773692692024-01-11 14:45:43

    Basé sur : https://serverfault.com/questions/357716/can-apache-conditionally-perform-a-rewrite-from-a-custom-http-header

    RewriteCond %{HTTP:CF-IPCountry} = MX
    RewriteRule .* https://domain.mx%{REQUEST_URI} [R=301,L,QSA]

    Documentation : https://httpd.apache.org/docs /2.4/mod/mod_rewrite.html#rewritecond

    Mais considérez également que les utilisateurs peuvent délibérément essayer d'accéder à des sites Web qui ne correspondent pas à leur emplacement, par exemple : les utilisateurs hispanophones au Canada. Je recommande de permettre à l'utilisateur de définir les paramètres régionaux qu'il souhaite, de stocker cette préférence dans un cookie et d'utiliser %{HTTP_COOKIE} pour contrôler le comportement de remplacement.

    répondre
    0
  • Annulerrépondre