【问题标题】:Magento SEO linksMagento SEO 链接
【发布时间】:2014-02-15 19:34:45
【问题描述】:

我的客户对 SEO 了解一点,但我不知道。据他说,我们的网址不好,因为它们是重复的。以下是正在发生的事情的示例: 我们的网站销售炊具,因此我们有以下类别,例如:铸铁和炉排。炉排类别是铸铁的一个子类别。 知道了这一点,我们有一个方形格栅,它在主页上。从主页访问产品,链接类似于“/square-grate.html”。 如果我启用类别链接(进入 settings> Catalog> Insert Category of Products in URLs ),我会得到以下链接: "/square-grate.html" - 从主页访问 “cast-iron/square-grate.html” - 通过从类别页面 cast iron 访问 "cast-iron/grates/square-grate.html" - 通过访问铸铁类别,然后访问子类别 grate 正是我的客户需要的是上述所有示例 url 都是“/cast-iron/square-grate.html” 有人有任何提示我该怎么做吗?

可能会更改 .htacess 或一些 php 脚本,但我不知道该怎么做。

【问题讨论】:

标签: php magento seo friendly-url


【解决方案1】:

SEO 是 magento 的一个已知问题。由于架构和行为,只有两种可能的方法来获得这种工作或至少减轻症状。第一个是 Magento 内置设置,它使用规范标签来保存主 url,因此 google 不会将子类别 productdetails 页面视为重复内容。您可以在“系统->配置->目录->搜索引擎优化”下设置它,您可以为类别和产品打开规范链接元标记。唯一的一半好处是,它将使用上面的链接作为规范......例如在您的情况下,类别不会出现在规范网址中......只有“/square-grate.html”。

第二个是花一些钱买一个模块,它会为你完成所有需要的重写。 (我已经编写了这样一个模块,它在http://www.zoobox.de 上工作起来就像一个魅力

通过 .htaccess 做这些事情是一项艰巨的任务,因为您必须对类别和产品名称中的任何更改做出反应……甚至对产品列在另一个类别中的任何更改做出反应……你达到了 10 个类别和 300 种产品;) .htaccess 的另一个缺点是 apache 必须在对服务器的任何调用中遍历 .htaccess 中的所有重写......如果你有很多重写,这可以是容易在 0.5 到 2MB 大小,这会在某些时候影响性能...尤其是在重负载阶段...

如果您需要进一步的帮助或对重写模块感兴趣,请告诉我 ;)

干杯 本

【讨论】:

    【解决方案2】:

    使用 Magento 的规范功能将是解决此问题的最简单方法。唯一的缺点是它不包含类别名称,并且可能会错过 URL 中的其他关键字。如果您有编程技能或预算,开发或购买模块是下一个最佳方式。如果您的预算有限,如果您愿意进行一些修改和数据输入/数据库导入,您可能无需花费任何钱就可以离开。

    我不是一个很好的程序员,但我解决了这个问题,添加了一个新属性,比如 canonical_category。在 Magento 1.8 之前,我能够使用基于类别 ID 的新值覆盖 $categoryid。例如,无论我想设置什么作为规范链接,我只需在新属性字段中输入一个数字,它就会生成一个具有该类别的链接。

    Magento 1.8 略有不同,因为它们看起来像是更新了该部分。不幸的是,我现在无法查看它并告诉您如何获得相同的功能,但我很快浏览了新代码并整理了一个解决方法,以防它可能对您有所帮助。

    需要修改的文件是/app/code/core/Mage/Catalog/Model/Product/Url.php。在第 267 行,我们将找到处理规范链接的代码,即函数 _getProductUrl。基本上,如果可用,我们将使用 canonical_category 值,如果未输入任何内容,则回退到原始代码。

    所以我们要修改这行代码:

    if (!empty($requestPath)) {
        return $this->getUrlInstance()->getDirectUrl($requestPath, $routeParams);
    }
    

    if (!empty($requestPath)) {         
            if($product->getCanonicalCategory()) {
                return $this->getUrlInstance()->getDirectUrl($product->getCanonicalCategory());
            } else {
                return $this->getUrlInstance()->getDirectUrl($requestPath, $routeParams);
            }
        }
    

    为了清楚起见,所有这一切都会让您指定您想要的规范链接,在您的情况下,您想要包含类别名称。您指向产品页面的链接仍然看起来是相同的(square-grate.html、/cast-iron/square-grate.html),但据我了解,搜索引擎仍会将其视为同一页面,只要指定了规范链接。这应该可以解决 SEO 问题,但如果您想要使用特定链接,现在还有更多工作要做。我可以告诉你任何不是动态完成的方法都不是最好的方法,但它会起作用,你可以通过电子表格和数据库导入轻松更新/生成链接。您也可以将其仅用于需要包含附加 [类别] 关键字的产品。请注意,为属性输入的 URL 应该是相对的(即“cast-iron/square-grate.html”)。希望这会有所帮助。

    【讨论】:

    • 我会试一试,让你知道结果如何。谢谢!
    • 它有效,但我发现这并不是我的客户所需要的 :( 我为此感到难过。但无论如何,非常感谢!
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多