编写Magento GeoIP商店重定向,共享链接的问题

时间:2013-06-21 13:37:07

标签: php magento redirect geoip

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

的情况时,这种情况很有效

当美国/欧盟客户点击此链接时,他们只是被重定向到主页,有人知道如何绕过这个吗?

由于

1 个答案:

答案 0 :(得分: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);
}