0

我目前有一个 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

当美国/欧盟客户单击此链接时,他们只会被重定向到主页,有人知道解决此问题的方法吗?

谢谢

4

1 回答 1

3

如果您在子目录上设置了其他商店,您不能将它们重定向到其他商店并附加 URI 吗?

将您的代码放在上面:

if(strtoupper($country_code) == "US"){
    header('Location: http://example.com/us' . $_SERVER['REQUEST_URI']);    
}
elseif(in_array(strtoupper($country_code),$euArray)){
    header('Location: http://example.com/eu' . $_SERVER['REQUEST_URI']);
}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);
}
于 2013-06-25T15:41:26.317 回答