Ubah hala TLD berdasarkan negara pengguna
P粉761718546
P粉761718546 2024-01-10 17:25:21
0
1
442

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粉761718546
P粉761718546

membalas semua(1)
P粉477369269

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan