地理定位网站的网站结构

Posted

技术标签:

【中文标题】地理定位网站的网站结构【英文标题】:Site structure for geo targetting sites 【发布时间】:2017-05-08 11:22:45 【问题描述】:

我有一个基于多区域的站点,我根据 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');
     

【问题讨论】:

也许在某人第一次访问时设置一个会话变量并将他们重定向到您认为他们想要查看的国家/地区,但如果在他们返回主页时设置了该变量,他们会避免重定向。因为它不仅适用于 Googlebot。如果加拿大的用户想要查看英国的目录怎么办?他们不能? 请给出你想说的结构。 没有结构变化,只是没有基于 IP 地址的自动重定向。或者,如果您这样做,则仅在第一次重定向,然后让访问者遍历您的整个网站,而不是您当前猜测访问者(或 googlebot)想要查看哪些数据的策略。 如果我将我的主页设置为重定向用户,googlebot将如何抓取它? Googlebot 是用户。如果谷歌无法抓取您的网站,这意味着您的用户也会遇到问题,正如您已经看到的那样。你在哪个国家?当您尝试访问另一个国家/地区的目录时会发生什么?这不是 googlebot 特定的问题,它适用于所有用户。 【参考方案1】:

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

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');
     

【讨论】:

【参考方案2】:

您可以使用gethostbyaddr 来检查请求是否来自 Google 抓取工具,然后根据该信息您可以决定将用户重定向到哪里。

// 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);

了解 Google 关于将其机器人重定向到预期用户页面以外的其他页面的政策,我不太确定他们是否对此感到不满。

如果您想检测除 google 之外的更多爬虫,请搜索其他网络爬虫的 IP 范围。

要获取用户的 IP 地址,请查看以下答案:https://***.com/a/15699240/3421225

【讨论】:

这就是谷歌。 bing 和其他所有爬虫呢?想要查看其他国家/地区目录的用户,或者使用 *** 显示他们来自其他国家/地区的访问者呢?是的,我很确定谷歌讨厌当他们的爬虫显示一个与普通访问者完全不同的页面时...... @LucasKrupinski 您将不得不自己检查一下。您知道将您带到那里的功能。这并不难,只需查找IP范围即可。我发现了这个:ipinfodb.com/robots-ip-address-ranges.php

以上是关于地理定位网站的网站结构的主要内容,如果未能解决你的问题,请参考以下文章

未经许可的地理定位[重复]

使用地理位置定位笔记本电脑[关闭]

用于地理定位/地理空间测试的有效地址列表/数据库

服务器端地理定位?

来自 3rd 方脚本的 html5 地理定位权限

地理定位的最佳方法是啥?