在使用 Magento 2 构建电商网站时,经常会遇到 URL 相关的问题,例如产品 URL 路径不正确、分类 URL 无法访问、cms 页面链接失效等等。手动一个个修改既耗时又容易出错。elgentos/regenerate-catalog-urls 扩展提供了一组便捷的命令行工具,可以批量重新生成产品、分类和 CMS 页面的 URL,极大地提高了维护效率。 composer在线学习地址:学习地址
这个扩展能做什么?
elgentos/regenerate-catalog-urls 扩展为 Magento 2 添加了一系列命令行工具,用于重新生成:
- 产品 URL Rewrite: 基于产品的 URL 路径重新生成 URL Rewrite。
- 分类 URL Rewrite: 基于分类的 URL 路径重新生成 URL Rewrite。
- CMS 页面 URL Rewrite: 基于 CMS 页面的 URL 路径重新生成 URL Rewrite。
- 分类 URL Path: 基于分类的 URL Key 及其父级分类重新生成分类 URL 路径。
安装
安装非常简单,只需通过 Composer 即可:
composer require elgentos/regenerate-catalog-urls php bin/magento setup:upgrade
或者,你也可以下载源码,将 src 目录复制到 app/code/Elgentos/RegenerateCatalogUrls,然后运行 php bin/magento setup:upgrade。
使用方法
该扩展提供了多个命令行指令,可以通过 php bin/magento 命令调用:
Usage: regenerate:product:url [-s|--store="..."] [pids1] ... [pidsN] regenerate:category:url [-s|--store="..."] [-r|--root="..."] [cids1] ... [cidsN] regenerate:category:path [-s|--store="..."] [-r|--root="..."] [cids1] ... [cidsN] regenerate:cms-page:url [-s|--store="..."] [pids1] ... [pidsN] Arguments: pids Products (or Pages) to regenerate cids Categories to regenerate Options: --store (-s) Use a specific store (store Id, store code or 'all') --root (-r) Regenerate for root category and its children, ignoring cids. --verbose (-v) Verbose mode to display the errors. Eg: duplicated product urls --help (-h) Display this help message
示例:
-
重新生成所有产品在全局商店中的 URL:
php bin/magento regenerate:product:url
-
重新生成 ID 为 1, 2, 3, 4 的产品在商店 1 中的 URL:
php bin/magento regenerate:product:url -s1 1 2 3 4
-
重新生成所有 CMS 页面的 URL:
php bin/magento regenerate:cms-page:url -s all
-
重新生成根分类 ID 为 4 及其子分类在商店 1 中的 URL:
php bin/magento regenerate:category:url -s1 -r4
常见问题 (FAQ)
-
url_key 和 url_path 有什么区别?
url_key 包含关键字,例如 “joust-duffle-bag”。url_path 是通过将 url_key 添加后缀生成的 (产品后缀存储在 catalog/SEO/product_url_suffix 中,默认为 .html)。因此,url_path 默认会变成 joust-duffle-bag.html。它还会添加父级分类的 slug,因此 url_path 可能会变成 bags/joust-duffle-bag.html。但是,自 Magento 2.1 版本早期以来,url_path 的使用已被弃用。如果你运行的是最新的 Magento 2 版本,可以安全地删除这些值。
-
运行命令时出现 “Duplicated url” 警告?
如果看到此错误,则表示 catalog_product_entity_varchar 中存在重复的 url_key 值 (在同一商店中)。可以使用 baldwin/magento2-module-url-data-integrity-checker 扩展来检查这些值 (需要手动修复)。
优势和实际应用
elgentos/regenerate-catalog-urls 扩展的优势在于:
- 批量处理: 可以一次性重新生成多个产品、分类或 CMS 页面的 URL,大大节省了时间。
- 灵活性: 可以指定商店、根分类等参数,灵活控制重新生成的范围。
- 易于使用: 通过简单的命令行指令即可完成 URL 的重新生成。
- 解决 URL 问题: 可以有效解决 URL 路径错误、重复 URL 等问题,提升 SEO 和用户体验。
总而言之,elgentos/regenerate-catalog-urls 扩展是 Magento 2 商店维护的利器,可以帮助你轻松管理和修复 URL 问题,提升网站的整体质量。