自动重定向到基于用户国家的网站版本



我正在尝试根据一个国家/地区为我的网站创建自动重定向用户。该网站仅以一种语言提供,但定价将是基于国家货币。这是一个简单的网站,主页,条款和条件,隐私政策,仅此而已。我的托管提供商是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. 波兰的可选用户无法为加拿大用户加速版本,反之亦然
  7. 所有使用英语或任何其他语言的用户,在任何国家/地区,访问http://www.example.com。在标题中,我有链接可以自由更改语言版本,然后访问http://www.someadress.com,反之亦然。

示例

  • 访问www.istockphoto.com
  • 在我的情况下,我被重定向到http://www.istockphoto.com/ca
  • 在波兰,我将被重定向到http://www.istockphoto.com/pl
  • 您将根据您的国家自动重定向

示例代码

我试图使用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]

有什么想法我该如何以最简单的方式做?

检查服务器上安装了MOD_GEOIP模块(GEOIP扩展名(。

然后,相应地调整您的.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

最新更新