【发布时间】:2014-01-25 13:28:06
【问题描述】:
我们有带有 URL 和谷歌分析的 sitemap.xml 开始抛出错误,如 this 不可用、未找到等......
我们有英语和克罗地亚语商店。 例如,当您尝试打开(在克罗地亚商店时)url 这将是一个 404 页面。
切换到英文商店:效果很好。
有人知道该怎么做吗?
附言。客户不希望在 URL 中存储代码
【问题讨论】:
标签: magento translation store analytics sitemap.xml
我们有带有 URL 和谷歌分析的 sitemap.xml 开始抛出错误,如 this 不可用、未找到等......
我们有英语和克罗地亚语商店。 例如,当您尝试打开(在克罗地亚商店时)url 这将是一个 404 页面。
切换到英文商店:效果很好。
有人知道该怎么做吗?
附言。客户不希望在 URL 中存储代码
【问题讨论】:
标签: magento translation store analytics sitemap.xml
与客户长时间交谈后: URL 必须保持原样。无后缀无前缀, 没有子域等。
检查了其他 magento 项目,它们都没有相同的行为。 :S 很可能是某些插件导致了这种情况。
我想出了简单的解决方案,但没有奏效。 基本上想法是通过 $_SERVER 检查请求,检查 URL 并确定在 index.php 中加载哪个存储
Mage::run($storeID);
但是什么都没发生... 又是同样的问题。 这是另一段代码,但我不喜欢它(它有效但很愚蠢)。:
$link=mysql_connect("localhost","username","password");
mysql_select_db("database",$link);
$path= substr($_SERVER['REQUEST_URI'],1) ;// remove starting slash
$sql = "SELECT store_id FROM `core_url_rewrite` WHERE request_path = '{$path}'";
$rez= mysql_fetch_object(mysql_query($sql,$link));
if(!empty($rez)){
// found the url and storeID
$store= $rez->store_id;
if($store != Mage::app()->getStore()->getId()){
// is store == current store?
//Mage::app()->setCurrentStore($store);
if($store==1) $storeID="hr"; else $storeID="en";
$_SERVER['REQUEST_URI']=$_SERVER['REQUEST_URI']."?___store=".$storeID;
// Mage::run($storeID); // doesn't work.
header("Location: ".$_SERVER['REQUEST_URI']);
die; // just in case
}
}
Mage::run($mageRunCode, $mageRunType); //default exec
【讨论】:
您的 2 种语言网站在同一个域名上。这导致了问题。
你可以:
每种语言使用 1 个子域 或者 将默认语言/商店设为英语 或者 做一些更精确的事情,比如按来源过滤用户(如果你来自搜索引擎并且你有一个英文网址,然后去英文商店)。
等等
【讨论】: