根据用户所在国家/地区自动重定向到网站版

时间:2018-02-26 07:43:29

标签: html apache .htaccess redirect http-redirect

我正在尝试根据某个国家/地区为我的网站创建自动重定向 用户。该网站仅提供1种语言版本,但价格为 基于国家货币。这是一个简单的网站,主页,条款和 条件,隐私政策等等。我的托管服务提供商是OVH和我 假设他们有Apache服务器。

以下是我要做的事情:

  1. 主要地址http://www.example.com
  2. 波兰语使用波兰语的用户使用http://www.example.com。我还拥有一个国家/地区域http://www.example.pl
  3. 加拿大使用波兰语的用户会自动重定向到http://www.example.com/ca
  4. 使用波兰语的美国用户会自动重定向到http://www.example.com/us
  5. 来自加拿大和美国以外国家/地区的所有波兰用户都使用http://www.example.com
  6. 来自波兰的可选用户CAN&#T; t为加拿大用户访问版本,反之亦然
  7. 所有在任何国家/地区使用英语或任何其他语言的用户都可以访问http://www.example.com。在标题中,我有链接允许自由更改语言版本并转到http://www.someadress.com,反之亦然。
  8. 实施例

    示例代码

    我试图用php做这件事,但它并没有像预期的那样工作。服务器位于法国,我被重定向到http://www.test.com

    PHP:

    
    
    $country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];
    if ($country_code=="PL") {$link = 'http://www.example.com';}
    elseif ($country_code=="CA") {$link = 'http://www.example.com/ca';}
    elseif ($country_code=="US") {$link = 'http://www.example.com/us';}
    else {$link = 'http://www.test.com';}
    header("location:$link");
    exit;
    
    
    

    我尝试编辑htaccess文件但没有发生任何事情:

    
    
    RewriteEngine On
    
    RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^PL$
    RewriteRule ^(.*)$ http://www.example.com [L]
    
    RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^CA$
    RewriteRule ^(.*)$ http://www.example.com/ca [L]
    
    RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^US$
    RewriteRule ^(.*)$ http://www.example.com/us [L]
    
    
    

    任何想法如何以最简单的方式完成?

1 个答案:

答案 0 :(得分:1)

检查您的服务器上是否安装了mod_geoip模块(GeoIP Extension)。

然后,相应调整.htaccess文件:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Start Redirecting countries

# Canada
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://ca.abcd.com$1 [L]

# India
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^IN$
RewriteRule ^(.*)$ http://in.abcd.com$1 [L]

# etc etc etc...

文档:URL