如何在Magento的内部搜索中制作动态规范标签?

时间:2014-11-11 11:53:54

标签: magento seo canonical-link

当我在magento中进行内部搜索(即搜索产品)并在此之后尝试过滤结果(按价格过滤)时,会在我的网址中添加一些查询字符串,但Google会指出类似于重复的内容。

Magento在类别和产品上都有规范标签功能,但我无法在"搜索"查询和过滤器。

我的问题是:当我过滤结果时,如何在magento的搜索中添加规范标签?

2 个答案:

答案 0 :(得分:0)

我们通常建议隐藏内部网站搜索以获取索引(您可以使用标准的“NOINDEX,FOLLOW”标记执行此操作)。

但是如果由于某种原因你真的需要索引它,这里是最简单的代码,可以让你添加一个规范的URL。

请注意,在这种情况下,我们使用默认搜索。在此代码中,规范URL仅包含搜索查询,不包含任何过滤器。

/应用/设计/前端/ {your_package} / {your_theme} /template/page/html/head.phtml

添加此代码:

<?php

$controller = Mage::app()->getFrontController();
if(is_object($controller) && is_callable(array($controller, 'getAction'))){
    $action = $controller->getAction();
    if(is_object($action) && is_callable(array($action, 'getFullActionName'))){
        $fullActionName = $action->getFullActionName();        
    }
}

if(!empty($fullActionName) && $fullActionName == 'catalogsearch_result_index')
{
    $request = $this->getRequest();
    $params  = $request->getParams();

    if(!empty($params['q'])){
        $action = $request->getActionName();
        if($action == 'index'){
            $action = '';
        }
        $canonicalUrl = $this->getBaseUrl() . $request->getRouteName() .DS. $request->getControllerName() .DS. $action . '?q=' . $params['q'];
        echo "<link rel=\"canonical\" href=\"$canonicalUrl\" />";
        echo "<!--Canonical URL was added from template head.phtml-->";
    }
}

?>

另请注意,我们建议使用工具栏参数limit = all。没有它,很难在页面上获得正确的Canonical URL。

如果此参数已打开,(您可以在System-&gt; Configuration-&gt; Catalog-&gt; Catalog-&gt; Frontend-&gt;允许每页允许所有产品下查看),您需要添加'限制=全部'到URL。

P.S。要详细了解该主题,请阅读Google的本指南:http://googlewebmastercentral.blogspot.com/2013/04/5-common-mistakes-with-relcanonical.html

答案 1 :(得分:0)

您也可以通过robots.txt避免使用抓取工具

User-agent: * Disallow: /catalogsearch/

上面的代码将避免在谷歌中抓取搜索页面。