Heim  >  Fragen und Antworten  >  Hauptteil

Leiten Sie die TLD basierend auf dem Land des Benutzers um

Ich glaube nicht, dass dies mit .htaccess möglich ist. Ich habe mehrere Domains:

domain.mx
domain.com
domain.ca

Ich möchte die Lokalisierung einer TLD basierend auf dem Benutzerstandort erzwingen. Wenn ein Benutzer aus Mexiko kommt und domain.com/test/a/ besucht, wird er bei seinem ersten Besuch zu domain.mx/test/a weitergeleitet. Von da an behält die Website den Benutzer automatisch in .mx

Dies ist meine aktuelle PHP-Lösung, aber ich bin mir nicht sicher, ob das Umschreiben der Regeln möglich oder schneller ist:

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 Tage vor390

Antworte allen(1)Ich werde antworten

  • P粉477369269

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

    基于: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]

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

    但还要考虑到用户可能故意尝试访问与其位置不匹配的网站,例如:加拿大的西班牙语用户。我建议允许用户设置他们想要的区域设置,将该首选项存储在 cookie 中,并使用 %{HTTP_COOKIE} 来控制重写行为。

    Antwort
    0
  • StornierenAntwort