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

uelo1irk  于 2022-11-12  发布在  其他
关注(0)|答案(5)|浏览(122)

我有一个包含几个类别的商店。商店中的大多数产品都属于2-3个类别。我希望每个产品只有一个URL-domain.com/product_name.html。我不希望产品URL中包含类别路径。
我将“为产品URL使用类别路径”设置为“否”,但当我重新索引目录URL重写时,它会为每个产品创建一个常规URL(domain.com/product_name.html),并为每个类别路径创建一个常规URL(domain.com/category_path/product_name.html)。
我已经删除了所有包含类别路径的产品URL重写,但当我重新索引目录URL重写时,它会再次创建它们。
“对产品URL使用类别路径”配置是否应该防止这种情况?我是否遗漏了什么?
我使用的是Magento版本1.7.0.0
谢谢

kulphzqa

kulphzqa1#

根据您的Magento版本和设置这些URL的目的,您可能希望使用较新版本中的规范URL功能。
https://stackoverflow.com/a/13500138/901449

iyzzxitl

iyzzxitl2#

我们遇到了同样的问题,我们有一个以上的类别分配给我们的产品,最终在谷歌网站管理员工具中的重复内容,因为谷歌是看到他们作为不同的网址,即使产品是完全相同的.我们最终有以下网址,这是恼人的

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配置**(“使用产品URL的类别路径”=“否”)**应该做的
https://www.scommerce-mage.com/magento-2-seo-unique-product-url.html
我必须说这个扩展或功能应该在Magento开箱即用。
总之,希望它能帮助到别人。
干杯
标准

noj0wjuj

noj0wjuj3#

我想您误解了配置设置。
该设置与您所描述的完全相同:你有一个网址每个类别和一个网址在所有。
问题是,没有一个产品的主要类别。因此,magento不知道,哪个类别应该被用作一个URL锚,如果你不是在一个类别视图,例如在一个小部件的主页上。
如果你是在一个cagegory视图,所有的网址应该是类别/产品的网址,如果你在主页上,并做一些像这里描述的:http://www.magentocommerce.com/wiki/groups/248/display_products_on_home_page没有涉及类别。

e5njpo68

e5njpo684#

Shani 1351,我遇到过和你一样的问题,我做过同样的操作:- 设置“使用产品URL的类别路径”为“否”。-清除缓存。-截短核心URL重写。-清除缓存。-然后检查我的URL重写数据(从后端)。我看到每个产品的许多URL(每个相关链接类别的URL)。
但是如果你查看你的首页,你会发现只有一个URL被产品使用。
我认为Magento需要生成“整个包”的URL,但不要在前端使用它们。
编辑(3年以上):
我最初的回答是错误的。产品URL与类别路径一起返回。
为了帮助magento获得重写的产品URL没有类别路径,我建议你覆盖以下方法如下(这里是一个POC,只是为了演示。不要修改核心文件,永远!):
Mage 目录模型产品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);
            }

看看评论行(194在我的CE 1.7.0.2)。这是有罪的!
只需在覆盖模块中删除以下行:

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

希望能帮到什么人。

aiazj4mn

aiazj4mn5#

对于 最 佳 的 搜索 引擎 优化 实践 , 我们 希望 这 两 个 规范 的 元 标签 的 类别 和 产品 都 被 启用 。 但 为什么 磁 博士 有 建议 或 列表 作为 一 个 或 另 一 个 例子 ?
如果 希望 搜索 引擎 仅 索引 具有 完整 类别 路径 的 页面 , 请 执行 下列 操作 :a . 将 类别 的 " 使用 规范 链接 元 标记 " 设置 为 * * " 是 " 。 * * b . 将 产品 的 " 使用 规范 链接 元 标记 " 设置 为 * * " 否 " 。 * *
如果 希望 搜索 引擎 仅 索引 产品 页面 , 请 执行 以下 操作 :a . 将 " 为 产品 使用 规范 链接 元 标记 " 设置 为 * * " 是 " 。 * * b . 将 " 为 类别 使用 规范 链接 元 标记 " 设置 为 * * " 否 " 。 * *
两者 的 好处 是 什么 ?
我 猜 的 最 佳 做法 ( 在 我 的 情况 下 , 我 的 客户 的 产品 , 是 类似 的 , 但 我 有 他们 手动 创建 包含 独特 的 关键 字 , 我们 试图 为 每个 产品 排名 最 佳 URL 结构 ) , 下面 的 公式 是 搜索 引擎 优化 的 最 佳 选择 ?

    • 使用 产品 URL 的 类别 路径 :类别 不 使用 规范 链接 元 标记 :是 对 产品 使用 规范 链接 元 标记 :是 的 * *

相关问题