Magento:使用产品URL的类别路径配置不起作用

时间:2013-02-26 22:12:17

标签: magento

我有一个有几个类别的商店。商店中的大多数产品分为2-3类。 我想每个产品只有一个网址 - domain.com/product_name.html。 我不希望产品中包含类别路径的URL。

我将“使用产品网址的类别路径”设置为“否”,但是当我重新编制目录网址重写索引时,它会为每个产品创建一个常规网址(domain.com/product_name.html),并为每个类别路径创建一个网址( domain.com/category_path/product_name.html)。

我删除了包含类别路径的所有产品网址重写,但是当我重新编制目录网址重写索引时,它会重新创建它们。

“产品网址的使用类别路径”配置是否应该阻止此操作?我错过了什么吗?

我正在使用Magento ver。 1.7.0.0

由于

5 个答案:

答案 0 :(得分:1)

根据您的Magento版本以及设置这些网址的目的,您可能希望使用更新版本中的规范网址功能。

https://stackoverflow.com/a/13500138/901449

答案 1 :(得分:0)

我认为您误解了配置设置。

设置完全符合您的描述:每个类别都有一个网址,而且所有网址都有一个网址。

问题是,产品没有MAIN类别。因此,如果您不在类别视图中,例如在小部件的主页上,magento不知道哪个类别应该用作网址锚。

如果您处于笼养视图中,则所有网址都应该是类别/产品网址,如果您在主页上并执行此处所述的操作:http://www.magentocommerce.com/wiki/groups/248/display_products_on_home_page没有类别调用。

答案 2 :(得分:0)

Shani1351,我遇到的问题与你相同。 我做了同样的操作: - 将“使用产品URL的类别路径”设置为“否”。 - 清除缓存。 - 截断'core_url_rewrite'。 - 清除缓存。 - 然后检查我的url重写数据(从后端)。我看到每个产品都有很多网址(每个相关链接类别都有一个网址)。

但如果您在首页上查看,您会发现产品AS预测只使用了一个网址。

我认为Magento需要生成“整个包”网址,但不要在前端使用它们。


编辑(超过3年后):

我最初的回答是错误的。产品网址将返回类别路径。

为了帮助magento获得没有类别路径的重写产品网址,我建议您覆盖以下方法(这里是POC,仅用于演示。不要修改核心文件,永远不要!):

Mage_Catalog_Model_Product_Url :: getUrl()

    public function getUrl(Mage_Catalog_Model_Product $product, $params = array())
{
    $routePath      = '';
    $routeParams    = $params;

    $storeId    = $product->getStoreId();
    if (isset($params['_ignore_category'])) {
        unset($params['_ignore_category']);
        $categoryId = null;
    } else {
        $categoryId = $product->getCategoryId() && !$product->getDoNotUseCategoryId()
            ? $product->getCategoryId() : null;
    }

    if ($product->hasUrlDataObject()) {
        $requestPath = $product->getUrlDataObject()->getUrlRewrite();
        $routeParams['_store'] = $product->getUrlDataObject()->getStoreId();
    } else {
        $requestPath = $product->getRequestPath();
        if (empty($requestPath) && $requestPath !== false) {
            $idPath = sprintf('product/%d', $product->getEntityId());
            if ($categoryId) {
        //         $idPath = sprintf('%s/%d', $idPath, $categoryId);
            }

查看注释行(CE 1.7.0.2上的194)。 这是有罪的!

只需在覆盖模块中删除此行:

$idPath = sprintf('%s/%d', $idPath, $categoryId);

希望它可以帮助别人。

答案 3 :(得分:0)

我们遇到了同样的问题,我们为我们的产品分配了多个类别,最终在Google网站管理员工具中出现了重复内容,因为即使产品完全相同,Google也将其视为不同的网址。我们最终得到了以下令人讨厌的网址

oursite.com/catgory-1/product-1.html

oursite.com/catgory-2/product-1.html

oursite.com/catgory-3/product-1.html

oursite.com/product-1.html

我们调查并发现了以下扩展,它完全符合Magento配置("使用产品网址的类别路径" =" NO")应该完成的工作

http://www.magentocommerce.com/magento-connect/seo-unique-catalog-urls.html

我必须说这个扩展或功能应该是开箱即用的Magento。

无论如何希望它可以帮到某人。

干杯

取值

答案 4 :(得分:0)

对于最佳SEO做法,我们希望同时启用类别和产品的规范元标记。但是,为什么Magneto文档有一个推荐或列表作为一个或另一个示例?

如果要搜索引擎仅索引具有完整类别路径的页面,请执行以下操作: 一种。将“类别的使用Canonical Link元标记”设置为“是”。 b。将产品的使用规范链接元标记设置为“否”。

如果您希望搜索引擎仅对产品页面编制索引,请执行以下操作: 一种。将产品的使用规范链接元标记设置为“是”。 b。将“使用Canonical Link元标记作为类别”设置为“否”。

一个或另一个的好处是什么?

我正在猜测最佳做法(就我而言,我的客户产品类似,但是我让他们手动创建包含唯一关键字的最佳URL结构,我们正在尝试为每种产品排名)公式是SEO的最佳选择?

使用产品URL的类别路径:否 使用Canonical Link元标记作为类别:是 对产品使用Canonical Link元标记:是