【问题标题】:Redirect users according to country -HTACCESS?根据国家重定向用户-HTACCESS?
【发布时间】:2012-10-08 17:26:56
【问题描述】:

。考虑我的域名是 www.example.com 。是英文的

我有荷兰语 www.example.com/nl 的一种语言版本

我只想将 url 重定向到 www.example.com/nl 以供从荷兰提出请求的人使用。

我的网站在共享主机中。我怎样才能做到这一点?

【问题讨论】:

  • 谷歌搜索 Redirect users according to country 给出了一些有希望的结果,包括 Stack Overflow 上的答案。

标签: php .htaccess url-rewriting


【解决方案1】:

看看 apache 模块 mod_geoIP,可能会做你想做的事,但否则你将不得不依赖脚本来获取地理位置信息并基于此重定向。

作为一个附带主题,IP 查找在获取地理位置信息方面并非 100% 准确,因此请小心。通常最好让用户在第一次选择,然后保存一个 cookie 来记住这个选择。

编辑:是的,@Pekka 有一个很好的观点,Google 上有大量关于它的信息。

【讨论】:

    【解决方案2】:

    您可以根据来自用户的浏览器语言设置进行重定向:

    RewriteCond %{HTTP:Accept-language} nl [NC]
    RewriteRule ^$ /nl [L,R=301]
    

    【讨论】:

    • 我喜欢这个,知道的很方便,我猜浏览器的语言设置比IP检查不太可能不正确?
    • 是的。有几个优点。您允许用户告诉您他们的偏好。因此,如果您有一个住在荷兰的美国人,他仍然会看到英文网站。其次,这种方法比 IP 查找要快得多,这会降低您的网站速度。
    【解决方案3】:

    您必须使用 GeoIP 服务并确定访问者所在的国家/地区,然后进行正确的重定向。

    在此处下载适用于 PHP 的 Geo API http://geolite.maxmind.com/download/geoip/api/php/

    有示例如何使用代码。

    应该是这样的

    include("geoipcity.inc");
    include("geoipregionvars.php");
    
    $gi = geoip_open("/usr/local/share/GeoIP/GeoIPCity.dat",GEOIP_STANDARD);
    $record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
    
    if ( $record->country_code == "NL" ) {
        header('Location: http://www.yoursite.com/nl');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 2018-07-06
      • 2012-04-22
      • 1970-01-01
      • 2012-04-07
      相关资源
      最近更新 更多