Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 地质目标场地的场地结构_Php_Redirect_Geolocation - Fatal编程技术网

Php 地质目标场地的场地结构

Php 地质目标场地的场地结构,php,redirect,geolocation,Php,Redirect,Geolocation,我有一个基于多地区的网站,我根据IP地址重定向用户。下面是根据用户所在国家重定向用户的代码。但是这段代码阻止Googlebot访问美国以外的页面。理想的结构应该是什么,以便Googlebot可以访问每个页面,并根据用户的IP地址重定向用户?提前谢谢 if ($country == "IN") { // do nothing } else if ($country == "BD" ") { header( 'Location:h

我有一个基于多地区的网站,我根据IP地址重定向用户。下面是根据用户所在国家重定向用户的代码。但是这段代码阻止Googlebot访问美国以外的页面。理想的结构应该是什么,以便Googlebot可以访问每个页面,并根据用户的IP地址重定向用户?提前谢谢

if ($country == "IN")
      {
    // do nothing


      }

    else if ($country == "BD" ")
      {
      header( 'Location:https://www.exmple.com/directory/bangladesh/index.php');

      }

    else if ($country  == "PK"  )
      {
      header('Location:https://www.exmple.com/directory/pakistan/index.php');
     }
    else if ($country  == "LK" )
      {
      header('Location:https://www.exmple.com/directory/srilanka/index.php');
     }
    else if ($country  == "US" )
      {
      header('Location:https://www.exmple.com/directory/usa/index.php');
     }
    else if ($country  == "CA")
      {
      header('Location:https://www.exmple.com/directory/canada/index.php');
     }
    else if ($country  == "GB")
      {
      header('Location:https://www.exmple.com/directory/uk/index.php');
     }
    else if ($country  == "NG")
      {
      header('Location:https://www.exmple.com/directory/nigeria/index.php');
     }
    else
      {
         header( 'Location:https://www.exmple.com/directory/global/index.php');
     }

如果美国用户被阻止访问该页面,但允许来自其他国家(如印度)的访问者查看该页面,服务器将阻止看似来自美国的爬行器。因此,以下代码修改将起作用:

if ($country == "US")
      {
    // do nothing


      }

    else if ($country == "BD" ")
      {
      header( 'Location:https://www.exmple.com/directory/bangladesh/index.php');

      }

    else if ($country  == "PK"  )
      {
      header('Location:https://www.exmple.com/directory/pakistan/index.php');
     }
    else if ($country  == "LK" )
      {
      header('Location:https://www.exmple.com/directory/srilanka/index.php');
     }
    else if ($country  == "IN" )
      {
      header('Location:https://www.exmple.com/directory/india/index.php');
     }
    else if ($country  == "CA")
      {
      header('Location:https://www.exmple.com/directory/canada/index.php');
     }
    else if ($country  == "GB")
      {
      header('Location:https://www.exmple.com/directory/uk/index.php');
     }
    else if ($country  == "NG")
      {
      header('Location:https://www.exmple.com/directory/nigeria/index.php');
     }
    else
      {
         header( 'Location:https://www.exmple.com/directory/global/index.php');
     }

您可以使用
gethostbyaddr
检查请求是否来自谷歌爬虫,然后根据这些信息您可以决定将用户重定向到何处

// Method will return "crawl-66-249-66-1.googlebot.com"
$host = gethostbyaddr('66.249.66.1');

// Check if the host contains a google domain.
$isGoogle = (strpos($host, 'googlebot.com') !== false);
要知道谷歌关于将其机器人重定向到不同页面而不是预期用户页面的政策,我不太确定他们是否不赞成这样做

如果你想检测更多的爬虫而不是谷歌,搜索其他网络爬虫的IP范围


要获取用户的IP地址,请查看以下答案:

可能在某人首次访问时设置会话变量,并将他们重定向到您认为他们想查看的国家,但如果在返回主页时设置了该变量,则他们会避免重定向。因为这不仅仅是为了谷歌机器人。如果加拿大的用户想要查看大不列颠的目录,该怎么办?他们不能?请给出你想说的结构。没有结构变化,只是没有基于IP地址的自动重定向。或者,如果你这样做,只在第一次重定向,然后让访问者遍历你的整个网站,而不是你目前的策略,猜测访问者(或谷歌机器人)想要看到什么数据。根据你的说法,如果我将我的主页设为重定向用户,谷歌机器人将如何爬行?谷歌机器人是一个用户。如果谷歌不能抓取你的网站,这意味着你的用户也会有问题,正如你已经看到的。你在哪个国家?当您尝试访问其他国家/地区的目录时会发生什么情况?这不是谷歌机器人特有的问题,这对所有用户都是可操作的。所以这就是谷歌。bing和其他爬虫呢?如果用户希望查看其他国家/地区的目录,或者使用VPN的用户将其显示为来自本国以外国家/地区的访问,那么情况又如何呢。是的,我敢肯定谷歌很讨厌他们的爬虫显示出与普通访问者完全不同的页面…@LucasKrupinski你得自己检查一下。你知道让你到达那里的功能。这并不难,只需查找IP范围即可。我发现: