【问题标题】:How to reroute to a different url identifying browser AND system language (PHP?如何重新路由到识别浏览器和系统语言(PHP?
【发布时间】:2015-03-18 15:30:58
【问题描述】:

问题

我们有一个 ccTLD 网站 (example.de),其中包含不同语言的子文件夹,显然需要将其移至 example.com 以进行正确的语言定位。由于 example.com 属于母集团公司,该公司迄今为止一直对 us-group.com 的所有访问者进行 301 处理,并且不愿意让我们 301 将 example.de 发送到 example.com 并放弃他们现有的 301 到 us-group.com,我们需要解决一些问题。

任务

  • 应将来自北美和南美的访客转至 us-group.com
  • 应将来自所有剩余国家/地区(例如欧洲和东南亚)的访问者从 example.de 重定向到 example.com 并留在那里,而不是重新路由到 us-group.com

挑战

我们发现许多来自美洲的访问者都使用代理,因此无法通过 IP 重新路由。 us-group.com 只会失去很多以前的流量。

是否可以使用结合了浏览器和系统语言(例如:EN-US、FR-CA、EN-CA、ES-AR、PT-BR 等)的 PHP 脚本重新路由它们?如果是这样,如何做到这一点?


其他想法:显然,这不是我们考虑做的唯一事情。在重新安排来自美洲的访客之前,我们会:

  1. 修改example.com域的DNS设置(一条记录:IP要改成德国服务器的IP地址)
  2. 修改vhost记录,使德国服务器将example.com的访问者重定向到目录example.com/en/(包含example.de内容的英文部分)
  3. 将来自美洲的访问者重新路由到 us-group.com(按浏览器和操作系统语言,如上所述)

【问题讨论】:

    标签: php reroute


    【解决方案1】:

    我使用与此类似的东西,但这是基于浏览器语言,而不是以任何方式基于系统语言。

    if(!isset($_COOKIE['language'])){
    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
    switch($lang){
            case "en-US":
              $rURL = "www.example.com"; 
              break;
            default:
              $rURL = "www.example.de"; 
          }
    
          if(isset($rURL)){
              setcookie("language", $rURL);
              header("HTTP/1.1 303 See Other");
              header('Location:' . $rURL);
          }
    }
    

    您当然可以更改 cookie 应存储多长时间等等 :)

    更新 如果您想将用户重定向回原始/检测到的站点(如果他们错误地或以其他方式回到错误的域,您可以简单地使用

    if(!isset($_COOKIE['language'])){
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
        switch($lang){
                case "en-US":
                  $rURL = "www.example.com"; 
                  break;
                default:
                  $rURL = "www.example.de"; 
              }
    
              if(isset($rURL)){
                  setcookie("language", $rURL);
                  header("HTTP/1.1 303 See Other");
                  header('Location:' . $rURL);
              }
        }else{
             header("HTTP/1.1 303 See Other");
             header('Location:' . $_COOKIE['language']);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2014-11-05
      • 2018-10-16
      相关资源
      最近更新 更多