> For the complete documentation index, see [llms.txt](https://docs.prestashop-project.org/1-6-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.prestashop-project.org/1-6-documentation/english-documentation/developer-guide/diving-into-prestashop-core-development/the-dispatcher.md).

# 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.
