Php Magento类别重定向会切断url的查询字符串
我们正在运行一个带有google analytics的Magento 1.4.2.0网店。 众所周知,谷歌在url上附加了一个名为“gclid Param”的查询字符串 客户单击以下url: 类别“bathrooms”在magento内部被重命名,因此magento自动创建了一个从旧类别名称到新名称“bathrooms furniture”的重定向 所以现在我们有了一个问题,magento在重写和重定向url时会用glic参数切断查询字符串 是否有人知道如何防止这种情况发生,或者在哪个核心模块中我们必须修改新url的构建 致意Php Magento类别重定向会切断url的查询字符串,php,.htaccess,magento,Php,.htaccess,Magento,我们正在运行一个带有google analytics的Magento 1.4.2.0网店。 众所周知,谷歌在url上附加了一个名为“gclid Param”的查询字符串 客户单击以下url: 类别“bathrooms”在magento内部被重命名,因此magento自动创建了一个从旧类别名称到新名称“bathrooms furniture”的重定向 所以现在我们有了一个问题,magento在重写和重定向url时会用glic参数切断查询字符串 是否有人知道如何防止这种情况发生,或者在哪个核心模块中
马库斯在对马根托的混乱进行了更深入的研究之后,我们找到了解决问题的方法 在Mage_Core的Url模型中存在一个类rewrite.php。 我们创建了一个自定义模型并覆盖了rewrite.php 在函数rewrite()中,我们添加了以下代码片段(标记为注释): 因此,我希望我们的解决方案能够帮助其他面临同样问题的人 致意
马库斯在对马根托的混乱进行了更深入的研究之后,我们找到了解决问题的方法 在Mage_Core的Url模型中存在一个类rewrite.php。 我们创建了一个自定义模型并覆盖了rewrite.php 在函数rewrite()中,我们添加了以下代码片段(标记为注释): 因此,我希望我们的解决方案能够帮助其他面临同样问题的人 致意
Markus在1.9.1.0中,这个问题可以通过在另一个类Mage\u Core\u Model\u Url\u Rewrite\u Request/function\u processRedirectOptions()中进行修补来解决。
只需在代码后添加 以下
$queryString=$this->\u getQueryString();
如果($queryString){
$targetUrl.='?'.$queryString;
}
并确保“如果”语句与
$this->\u sendRedirectHeaders($targetUrl,$ispermantRedirectOption);
}
我确信这已经足够了,因为您不需要为外部重定向传输查询字符串
快乐编码在1.9.1.0中,这个问题可以通过在另一个类Mage\u Core\u Model\u Url\u Rewrite\u Request/function\u processRedirectOptions()中进行修补来解决。
只需在代码后添加 以下
$queryString=$this->\u getQueryString();
如果($queryString){
$targetUrl.='?'.$queryString;
}
并确保“如果”语句与
$this->\u sendRedirectHeaders($targetUrl,$ispermantRedirectOption);
}
我确信这已经足够了,因为您不需要为外部重定向传输查询字符串
快乐编码我现在正在运行2.1.0社区版,我遇到了同样的问题。我试图找到上面的文件,但它们似乎是特定于1.X版本的Magento(至少是文件中的实现)。我已经找到了解决办法,但我讨厌我这样做。也就是说,我没有注意到该网站存在任何性能问题,我也没有修改任何Magento核心文件。所以这就是我所做的
转到杂项HTML部分
我很想听听大家对用这种方法解决问题的看法。我现在正在运行2.1.0社区版,我也遇到了同样的问题。我试图找到上面的文件,但它们似乎是特定于1.X版本的Magento(至少是文件中的实现)。我已经找到了解决办法,但我讨厌我这样做。也就是说,我没有注意到该网站存在任何性能问题,我也没有修改任何Magento核心文件。所以这就是我所做的
//$url_params = false;
//if ($url_params = $_SERVER['QUERY_STRING'])
//$url_params = "?".$url_params;
if ($external === 'http:/' || $external === 'https:')
{
if ($isPermanentRedirectOption)
{
header('HTTP/1.1 301 Moved Permanently');
}
header("Location: ".$this->getTargetPath() //.$url_params);
exit;
}
else
{
$targetUrl = $request->getBaseUrl(). '/' . $this->getTargetPath();
}
$isRedirectOption = $this->hasOption('R');
if ($isRedirectOption || $isPermanentRedirectOption)
{
if (Mage::getStoreConfig('web/url/use_store') && $storeCode =
Mage::app()->getStore()->getCode())
{
$targetUrl = $request->getBaseUrl(). '/' . $storeCode . '/'
.$this->getTargetPath();
}
if ($isPermanentRedirectOption)
{
header('HTTP/1.1 301 Moved Permanently');
}
header('Location: '.$targetUrl //.$url_params);
exit;
}
$targetUrl = $this->_request->getBaseUrl() . '/' . $this->_rewrite->getTargetPath();
$storeCode = $this->_app->getStore()->getCode();
if (Mage::getStoreConfig('web/url/use_store') && !empty($storeCode)) {
$targetUrl = $this->_request->getBaseUrl() . '/' . $storeCode . '/' . $this->_rewrite->getTargetPath();
}
if ($this->_rewrite->hasOption('R') || $isPermanentRedirectOption) {