Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 2.34 KB

README.md

File metadata and controls

60 lines (40 loc) · 2.34 KB

Fisheye_UrlRewriteOptimiser

Overview

A Magento module that stops URL rewrites with category paths being generated for products when 'Use Categories Path for Product URLs' setting is disabled in config.

Features

  • Stop needless URL rewrites for products that include category paths being created
  • Only applies when 'Use Categories Path for Product URLs' setting is set to 'No'

Note: this extension will only prevent category path based URL rewrites from being created. Removing existing URL rewrites will need to be managed separately (though may be added in a future version).

Issue

To highlight the issue (and purpose of this module) see the 2 scenarios below

Without module enabled

Without module enabled

  • 'Joust Duffle Bag' product is in 2 categories ('Gear' and 'Bags')
  • 4 product URL rewrite records are created for this product
    • 1 for the direct product URL
    • 3 for category path URLS (2 for the categories the product is associated to and also the root category...)
  • Overall 580 product URL rewrite records are created (using Magento's default sample data of 189 visible products and 39 categories)

With module enabled

Without module enabled

  • 'Joust Duffle Bag' product now just has 1 URL rewrite record for the direct path
  • Overall reduced to 189 product URL rewrite records (i.e. 1 per visible product)
  • Scale that up to thousands of products, categories, websites and store views and the space saved in the url_rewrite table could be huge!

Compatibility

  • PHP 7.x
  • Magento Open Source / Commerce Edition 2.1.x / 2.2.x (may work on older versions, but untested)

Installation

composer require fisheye/module-url-rewrite-optimiser
php bin/magento module:enable Fisheye_UrlRewriteOptimiser
php bin/magento setup:upgrade

Cleanup

If you installed this extension to prevent product rewrites with a category path being generated and you want to clean up your existing rewrites by removing them, run this query;

DELETE FROM url_rewrite
  WHERE is_autogenerated = 1          AND request_path LIKE '%/%'
  AND target_path LIKE '%/category/%' AND target_path  LIKE '%/product/%'
  AND entity_type = 'product'         AND metadata     LIKE '%category_id%';

Contributing

Issues, forks and pull requests welcomed :)