Skip to end of metadata
Go to start of metadata

The Dispatcher

The Dispatcher handles URL redirections.
For instance, instead of using multiple files in the root folder like product.php, order.php or category.php, PrestaShop only uses one file: index.php.

Starting with PrestaShop 1.5, front office URLs look like this:

  • /index.php?id_category=3&controller=category
  • /index.php?id_product=7&controller=product
  • /index.php?id_cms=4&controller=cms
  • etc.

Likewise, back office URLs look like this:

  • /admin-dev/index.php?controller=AdminDashboard
  • /admin-dev/index.php?controller=AdminProducts
  • /admin-dev/index.php?controller=AdminCmsContent
  • etc.

Additionally, the Dispatcher is built to support URL rewriting (or "Friendly URLs"). Therefore, PrestaShop URLs which look like this when URL-rewriting is off...

http://myprestashop.com/index.php?controller=category&id_category=3&id_lang=1
http://myprestashop.com/index.php?controller=product&id_product=1&id_lang=2

...will look like this when URL-rewriting is on:

http://myprestashop.com/en/3-music-ipods
http://myprestashop.com/fr/1-ipod-nano.html

There are several advantages to this system:

  • It is easier to add a controller.
  • You can use custom routes to change your friendly URLs (which is really better for SEO!)
  • There is only one single entry point into the software, which improves PrestaShop's reliability, and facilitates future developments.

The Dispatcher makes use of three abstract classes: Controller, FrontController and AdminController (the last two inheriting from the first one).

New routes can be created by overriding the loadRoutes() method.
The store's administrator can change a controller's URL using the "SEO & URLs" page in the back office's "Preferences" menu.

  • No labels