我目前有一个 Magento 项目,客户想要一个相当简单的 GeoIP 解决方案,我们尝试了一些模块,但所有模块都很庞大、凌乱并在其他地方引起错误。
我最终使用 GeoIP php 库和 .dat 文件完成了它,并在 index.php 中创建了一个语句,将其他用户重定向到 /us 和 /eu 文件夹,其中包含加载相关商店的 index.php 文件。看起来像这样
/########### GEOIP ############//
$geoipPath = 'includes/geoip.inc';
include($geoipPath);
$gi = geoip_open("includes/GeoIP.dat",GEOIP_STANDARD);
$ip = $_SERVER['REMOTE_ADDR'];
$country_code = geoip_country_code_by_addr($gi, $ip);
$euArray = array('DE','FR','AT','BE','HR','CY','CZ','DK','EE','FI','GR','HU','IS','IE','IT','LU','MD','MC','NL','NO','PL','PT','RO','RU','SK','SI','ES','SE','CH','UA','VA');
if(strtoupper($country_code) == "US"){
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'us_site';
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'website';
Mage::run($mageRunCode, $mageRunType);
}elseif(in_array(strtoupper($country_code),$euArray)){
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'eu_site';
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'website';
Mage::run($mageRunCode, $mageRunType);
}else{
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
Mage::run($mageRunCode, $mageRunType);
}
这很好用,除了发送时事通讯和链接太重的地方http://example.com/our-new-offers.html
当美国/欧盟客户单击此链接时,他们只会被重定向到主页,有人知道解决此问题的方法吗?
谢谢