Answers:
GeoIP和商店视图将帮助您解决此问题。
GeoIP 您可以为您的GeoIP数据库使用MaxMind这样的提供程序(或将其加载为在标题中添加国家/地区的网络服务器模块)。
根据IP地址,您可以将客户重定向到正确的商店视图(检查商店视图切换器生成的链接。
商店视图
俄语应该是商店视图。检查商店视图切换器,以了解需要用于客户的链接是什么。
重定向后,您可以设置cookie以将客户与商店视图相关联。
Magento GeoIP扩展(由我编写)可下载最新的MaxMind数据文件并定期更新。
我建议参加controller_front_init_before
活动。您可以使用以下代码检查是否获得了访客所在国家/地区的ISO 3166-1代码,然后将其重定向到corespondent商店视图(如果有):
$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();
/*
* Check if store view for this country/language exists and it is not a current store view.
* If so do a redirect.
* You can also take a language from user agent into consideration.
*/
有关使用此扩展程序的详细文章,可以在这里找到。
如果可以编程,请访问http://www.thefutureoftheweb.com/blog/use-accept-language-header。您可以在index.php
加载适合该语言的storeview中进行切换。
另一件事要看的是GEO IP。
几行代码将为您提供用户国家代码,您可以根据此代码进行切换。
但是请注意,如果您使用与Enterprise Edition和Full Page Cache相同的存储(因为第一页命中被缓存),则在使用任何基于重定向的代码时都会遇到问题。
Vary: Accept-Language
在浏览器和FPC的标题中。
另一个选择是使用PHP的auto_prepend配置。这将导致由PHP处理运行该脚本的所有脚本之前实际请求的脚本运行,但之后的.htaccess(如果你正在使用的)。
这种方法与其他一些建议(例如,使用MaxMind来获取地理位置数据并存储特定区域的视图)相结合,可以得出一种非常干净的方法。
如果您正在运行Magento> = 1.4的版本,则可以通过设置$ _SERVER ['MAGE_RUN_CODE']值来配置默认商店代码。
在.htaccess文件或apache的配置中,添加以下内容:
php_value auto_prepend_file /var/www/mystore/path/to/script.php
在script.php
执行任何必要的业务逻辑并设置适当的商店代码时:
<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
$_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
$_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}
需要注意的一件事是,这将适用于所有请求的PHP文件,因此您需要牢记这一点。