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(); }
Basé sur : https://serverfault.com/questions/357716/can-apache-conditionally-perform-a-rewrite-from-a-custom-http-header
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.