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