如何在Magento 2中删除和重新生成URL重写?


23

我最近在magento 2商店上创建了2个其他商店视图。现在,类别和产品不适用于这些商店的网址是不正确的

例如:http : //example.com/catalog/category/view/s/pouches/id/20/ 假定为http://example.com/accessories/pouches.html

现在,当我一一保存每个产品和类别时,它将为该产品或类别重新生成URL重写。

但是有很多产品和类别。

那么有什么方法可以重新生成URL重写

与Magento 1.x中一样,可以通过重新编制索引来完成。


在Magento 2中,URL重写模块不使用Indexer创建重写。在保存/导入产品/类别/ cms页的过程中会生成重写。因此,您可能需要采用编程方式来加载和保存类别
mp196

您能建议我一些创建脚本的参考吗?
阿伦·卡纳瓦特

您需要重新索引。
Vaibhav Jain

我已经尝试建立索引,Magento 2中没有URL重写索引。因此它不起作用。我现在又重新索引了,它不起作用
Arun Karnawat

1
对于您尝试的产品,是从网格中选择所有产品,然后选择更新属性,然后在“网站”选项卡中选择网站(尽管产品已分配给同一网站),这将重新保存产品并可能重新生成URL重写。
mp196

Answers:


16

模块是被弃用,你可以使用这个模块来代替

使用Composer下载;

作曲者需要elgentos / regenerate-catalog-urls

php bin / magento设置:升级

重新生成所有产品和全球商店的URL

php bin / magento重新生成:产品

为商店1重新生成ID为(1、2、3、4)产品的URL

php bin / magento重新生成:product:url -s1 1 2 3 4


该模块是有问题的,但在某些情况下仍然可以提供帮助。
Gediminas

是的,使用这些方法来触发产品网址重写将对我们有所帮助。
首席开发人员

1
目前,在2.1.9中不起作用...
Spyrule

@Spyrule我在2.1.9上遇到过问题。登录我的问题后,然而,有人向我指出这个拉请求处理不当经过批准工作的魅力对我来说:github.com/Iazel/magento2-regenurl/pull/21/commits/...
大卫·威尔金森

@Gerdiminas您知道什么错误?
哈里

19

您可以使用“ 重新生成Url重写”扩展名(它允许重新生成产品和类别的Url重写)。

要重新生成所有商店(支持多商店)中类别/产品的所有Url重写,请运行:

$> bin/magento ok:urlrewrites:regenerate

要重新生成特定商店视图中的Url重写(例如:商店视图ID为“ 2”):

$> bin/magento ok:urlrewrites:regenerate 2

1
该扩展程序非常适合我。感谢您的扩展。
mapaladiya

效果很好!谢谢!
LucScu

这会删除旧的重写吗?
马修·麦克伦南

1
它还在工作吗?不适合我
柯比

1
@OlegKoval我已经安装了1.3.1版本,但仍然对我不起作用。那么,这背后的问题是什么?
Chintan Kaneriya

3

要更新@mahendra Jella的答案,请尝试使用同一扩展名的该分支:https : //github.com/PascalBrouwers/magento2-regenurl/tree/feature/generate_category

这一个可以重新生成类别的URL

命令如下:

php bin/magento iazel:regenurl
# Regenrate Category URL keys >
php bin/magento iazel:regenerate_urls

在2.1.9中,此扩展对我来说效果很好。还可以通过ID来帮助识别重复的url产品(尽管进行较小的更新以列出sku会很有用)。
Spyrule

此扩展名不适用于我magento 2.2.9
jruzafa

3

实际上,有一种简便的方法可以解决此问题,而不会带来很多麻烦。对于TL:DR人员,粗体部分是相关的。

首先要检查的一件事;如果您有多个商店视图,请进入产品并将视图切换到特定视图。向下滚动并确保URL密钥设置为“使用默认值”。如果未选中,它将永远不会生成。我认为在导入M1产品时可能会发生这种情况。我有200多种需要修饰的产品。

如果您完成了将商店切换到其他根目录并重新存储的清理工作,那么此修补程序也会有所帮助。包括您自定义的。它只能以类别URL结束。不确定为什么产品的URL生成会完全失败,但是我认为这是因为Magento试图在一次操作中建立太多链接而失败。

因此,试一试。打开URL重写窗口,并记下条目数。这让您知道它是否有效。

进入一级类别(默认情况下不起作用,因为它没有URL密钥)。向下滚动到“搜索引擎优化/ URL关键字”。在键的末尾添加X。取消选中“为旧URL创建永久重定向”,这只会为操作增加更多工作。保存类别。

重复该操作并删除X,再次取消选中“为旧URL创建永久重定向”,因为您不需要那些旧URL来阻塞表格。再次保存。

刷新URL重写页面,您应该看到一个新的数字和闪亮的新URL。

根据需要重复。

仅供参考,真正的大类别可能会超时。因此,在这种情况下,请自行处理较小的子类别。在我的服务器上,该阈值约为400个条目。

Magento足够聪明,可以在子类别上方建立类别的链接。它也足够聪明,当它看到另一个类别的产品时,也在那里建立链接。

花了我一段时间才弄清楚为什么我在类别列表中浏览时看到越来越少的链接。这是因为大多数产品已经摆在桌子上,而只是以前没有出现过的散货。


0

因此,我遇到了产品问题,并使用批量更新功能从商店中删除了所有产品,然后重新添加它们,从而解决了此问题。我没有太多类别,所以我进去重新保存了它们。

总体而言,我认为避免在Magento 1中执行的ole截断和重新生成策略可能是最好的选择。如果您的产品改写看起来不对,请执行我上面发布的内容,然后改正它们。



0

我也有这个问题,我使用的是magento 1.9.2.4,因此magento没有提供任何方法来重新生成自定义网址。因此,我所做的工作很少,并且解决了该问题,我从未尝试过magento url重写扩展,因此无法说出它们是如何工作的。

注意-如果自定义网址重写过多,也许您不应该考虑这一点。

Magento重新生成其默认重定向,因此,如果自定义重写导致问题,则可以从magento数据库中截断core_url_rewrite表。

在此处输入图片说明

在执行此操作之前,请确保对数据库进行备份。


就是说,与magento 1不同的是,magento 2没有索引来重新生成url。问题是关于Magento 2.1
Arun Karnawat

0

不幸的是,这些扩展/模块都不对我有用。我大约有4000种产品,并且从Magento 1.9.2.4迁移到2.2.2。除此问题外,我使用了数据迁移工具,它的工作原理很吸引人。

我的某些产品具有url键,而有些则没有。我只有一家商店,这是令人沮丧的一部分。Magento似乎将管理员视为商店。

对我来说唯一有效的方法是导入带有“替换”选项的产品。而且出于SEO的目的,我不想更改产品的url,即使只是在其后添加数字也是如此。

我将尝试仅删除产品的url重写。


0

我遇到了类似的问题。在Magento 1中,可以截断url重写表并重新索引。Magento 2没有URL重写索引器,因此这不是一个选择。

许多建议使用Iazel扩展名。我选择了Olgeg Koval扩展名,并且效果很好。运行Magento 2.2,它删除了所有现有的URL重写,并为所有商店视图重新生成了它们。零问题。


0

要重新生成重写,您需要做的就是启动重写。转到类别或产品,并在产品/类别的SEO部分中通过在其前面添加“ a-”来更改其网址。例如:

网址=“产品名称”新网址=“ a-产品名称”

这将触发重写并重做所有其他重写。


仅当您进行少量重写时,这才有效。由于旧网址上存在100多种产品,因此这不是可行的解决方案。
雅克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.