PHPackages                             elgentos/regenerate-catalog-urls - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. elgentos/regenerate-catalog-urls

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

elgentos/regenerate-catalog-urls
================================

Regenerate Catalog URL Rewrites (products, categories, cms pages)

0.4.7(9mo ago)2832.5M—7.7%75[3 issues](https://github.com/elgentos/magento2-regenerate-catalog-urls/issues)OSL-3.0PHPPHP ~7.4|~8.0|~8.1|~8.2|~8.3

Since Sep 11Pushed 9mo ago21 watchersCompare

[ Source](https://github.com/elgentos/magento2-regenerate-catalog-urls)[ Packagist](https://packagist.org/packages/elgentos/regenerate-catalog-urls)[ RSS](/packages/elgentos-regenerate-catalog-urls/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (39)Used By (0)

Elgentos Regenerate Catalog URLs
================================

[](#elgentos-regenerate-catalog-urls)

What does it do
---------------

[](#what-does-it-do)

This extension adds console commands to be able to regenerate;

- a product rewrite URL based on its url path;
- a category rewrite URL based on its url path;
- a CMS page rewrite URL based on its url path;
- a category URL path based on its URL key and its parent categories.

Install
-------

[](#install)

Using Composer;

```
composer require elgentos/regenerate-catalog-urls
php bin/magento setup:upgrade
```

Or download and copy the `src` directory into `app/code/Elgentos/RegenerateCatalogUrls` and run `php bin/magento setup:upgrade`.

How to use
----------

[](#how-to-use)

```
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

```

Eg:

```
# Regenerate url for all products and the global store
php bin/magento regenerate:product:url

# Regenerate url for products with id (1, 2, 3, 4) for store 1
php bin/magento regenerate:product:url -s1 1 2 3 4

# Regenerate url for all CMS pages
php bin/magento regenerate:cms-page:url -s all

# Regenerate url for root category 4 and its children for store 1
php bin/magento regenerate:category:url -s1 -r4
```

FAQ
---

[](#faq)

### What's the difference between url\_key and url\_path?

[](#whats-the-difference-between-url_key-and-url_path)

`url_key` contains the key, like `joust-duffle-bag` for the product "Joust Duffle Bag". The `url_path` is generated by taking the `url_key` and adding the suffix (which for products is stored in `catalog/seo/product_url_suffix` and defaults to `.html`). So the `url_path` would by default become `joust-duffle-bag.html`. It also adds the category slugs of the parent categories so the `url_path` might become `bags/joust-duffle-bag.html`. However, the use of `url_path` has been deprecated since early Magento 2.1 versions (see [here](https://github.com/magento/magento2/issues/9113)). If you are running on a recent Magento 2 version, you can safely delete those values by running `DELETE FROM catalog_product_entity_varchar WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'url_path' AND entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product'))`.

URL paths are still used in categories though, so don't remove those.

### Why am I getting a 'Duplicated url' warning when running the command?

[](#why-am-i-getting-a-duplicated-url-warning-when-running-the-command)

If you see this error, you have duplicate `url_key` values (within a store) in `catalog_product_entity_varchar`. You can use this extension to check those (and you need to fix them manually): [baldwin/magento2-module-url-data-integrity-checker](https://github.com/baldwin-agency/magento2-module-url-data-integrity-checker).

###  Health Score

61

—

FairBetter than 99% of packages

Maintenance57

Moderate activity, may be stable

Popularity62

Solid adoption and visibility

Community30

Small or concentrated contributor base

Maturity79

Established project with proven stability

 Bus Factor1

Top contributor holds 65.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~72 days

Recently: every ~99 days

Total

36

Last Release

281d ago

PHP version history (7 changes)0.1.2PHP ~5.6.0|~7.0|~7.1|~7.2

0.2.1PHP ~7.1|~7.2

0.2.3PHP ~7.1|~7.2|~7.3

0.2.9PHP ~7.1|~7.2|~7.3|~7.4|~8.0|~8.1

0.2.11PHP ~7.1.3|~7.2|~7.3|~7.4|~8.0|~8.1

0.3.0PHP ~7.4|~8.0|~8.1

0.4.2PHP ~7.4|~8.0|~8.1|~8.2|~8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/88a6d8dc588e8f2a0948335563a754687f71304f0bd3b7f7049d4bcdc00a563c?d=identicon)[peterjaap](/maintainers/peterjaap)

---

Top Contributors

[![peterjaap](https://avatars.githubusercontent.com/u/431360?v=4)](https://github.com/peterjaap "peterjaap (87 commits)")[![JustinElst](https://avatars.githubusercontent.com/u/249633?v=4)](https://github.com/JustinElst "JustinElst (10 commits)")[![Scarbous](https://avatars.githubusercontent.com/u/1202318?v=4)](https://github.com/Scarbous "Scarbous (4 commits)")[![tuyennn](https://avatars.githubusercontent.com/u/4010395?v=4)](https://github.com/tuyennn "tuyennn (3 commits)")[![amenk](https://avatars.githubusercontent.com/u/1087128?v=4)](https://github.com/amenk "amenk (3 commits)")[![herman-aka-wouter](https://avatars.githubusercontent.com/u/40226924?v=4)](https://github.com/herman-aka-wouter "herman-aka-wouter (3 commits)")[![hostep](https://avatars.githubusercontent.com/u/85479?v=4)](https://github.com/hostep "hostep (2 commits)")[![sprankhub](https://avatars.githubusercontent.com/u/930199?v=4)](https://github.com/sprankhub "sprankhub (2 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (2 commits)")[![iazel](https://avatars.githubusercontent.com/u/1616917?v=4)](https://github.com/iazel "iazel (2 commits)")[![Gerke-W](https://avatars.githubusercontent.com/u/170713536?v=4)](https://github.com/Gerke-W "Gerke-W (2 commits)")[![DanieliMi](https://avatars.githubusercontent.com/u/31039652?v=4)](https://github.com/DanieliMi "DanieliMi (1 commits)")[![php4umagento](https://avatars.githubusercontent.com/u/1795471?v=4)](https://github.com/php4umagento "php4umagento (1 commits)")[![pmzandbergen](https://avatars.githubusercontent.com/u/8101295?v=4)](https://github.com/pmzandbergen "pmzandbergen (1 commits)")[![riconeitzel](https://avatars.githubusercontent.com/u/930706?v=4)](https://github.com/riconeitzel "riconeitzel (1 commits)")[![barryvdh](https://avatars.githubusercontent.com/u/973269?v=4)](https://github.com/barryvdh "barryvdh (1 commits)")[![t-heuser](https://avatars.githubusercontent.com/u/53174153?v=4)](https://github.com/t-heuser "t-heuser (1 commits)")[![flancer64](https://avatars.githubusercontent.com/u/5052385?v=4)](https://github.com/flancer64 "flancer64 (1 commits)")[![erfanimani](https://avatars.githubusercontent.com/u/930470?v=4)](https://github.com/erfanimani "erfanimani (1 commits)")[![aadmathijssen](https://avatars.githubusercontent.com/u/3796971?v=4)](https://github.com/aadmathijssen "aadmathijssen (1 commits)")

---

Tags

magento2-extensionmagento2-extension-freemagento2-module

### Embed Badge

![Health badge](/badges/elgentos-regenerate-catalog-urls/health.svg)

```
[![Health](https://phpackages.com/badges/elgentos-regenerate-catalog-urls/health.svg)](https://phpackages.com/packages/elgentos-regenerate-catalog-urls)
```

###  Alternatives

[tig/postnl-magento2

TIG Magento 2 PostNL extension

58544.2k4](/packages/tig-postnl-magento2)[lillik/magento2-price-decimal

Magento 2 Price Decimal Precision

111147.5k](/packages/lillik-magento2-price-decimal)[faonni/module-indexer-url-rewrite

Extension rebuild UrlRewrite index.

4072.4k](/packages/faonni-module-indexer-url-rewrite)[doofinder/doofinder-magento2

Doofinder module for Magento 2

13204.0k1](/packages/doofinder-doofinder-magento2)[magepal/magento2-form-field-manager

Customer and Address Form Fields Manager for Magento2

293.8k](/packages/magepal-magento2-form-field-manager)[graycore/magento2-graphql-introspection-cache

1015.2k](/packages/graycore-magento2-graphql-introspection-cache)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
