Rumah  >  Soal Jawab  >  teks badan

Ubah hala TLD berdasarkan negara pengguna

Saya tidak percaya ini boleh dilakukan dengan .htaccess. Saya mempunyai berbilang domain:

domain.mx
domain.com
domain.ca

Saya mahu memaksa menyetempatkan TLD berdasarkan lokasi pengguna. Jika pengguna berasal dari Mexico dan melawat domain.com/test/a/, mereka akan diarahkan ke domain.mx/test/a pada lawatan pertama mereka. Dari situ, tapak web secara automatik akan mengekalkan pengguna dalam .mx

Ini ialah penyelesaian PHP semasa saya, tetapi saya tidak pasti sama ada menulis semula peraturan boleh dilakukan atau lebih pantas:

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 hari yang lalu391

membalas semua(1)saya akan balas

  • P粉477369269

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

    Berdasarkan: 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]

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

    Tetapi juga pertimbangkan bahawa pengguna boleh sengaja cuba mengakses tapak web yang tidak sepadan dengan lokasi mereka, contohnya: pengguna berbahasa Sepanyol di Kanada. Saya syorkan membenarkan pengguna menetapkan tempat yang mereka mahu, menyimpan pilihan itu dalam kuki dan menggunakan %{HTTP_COOKIE} untuk mengawal gelagat penggantian.

    balas
    0
  • Batalbalas