Gives you the ability to manage redirects in your Sylius shop.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this plugin:
$ composer require setono/sylius-redirect-plugin
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the plugin by adding it to the list of registered plugins/bundles
in the config/bundles.php
file of your project:
<?php
return [
// ...
// Add before SyliusGridBundle
Setono\SyliusRedirectPlugin\SetonoSyliusRedirectPlugin::class => ['all' => true],
Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
// ...
];
It is IMPORTANT to add the plugin before the grid bundle else you will get a an exception saying You have requested a non-existent parameter "setono_sylius_redirect.model.redirect.class".
# config/routes/setono_sylius_redirect.yaml
setono_sylius_redirect_admin:
resource: "@SetonoSyliusRedirectPlugin/Resources/config/admin_routing.yaml"
prefix: /admin
# config/packages/setono_sylius_redirect.yaml
imports:
# ...
- { resource: "@SetonoSyliusRedirectPlugin/Resources/config/app/config.yaml" }
# ...
Use Doctrine migrations to create a migration file and update the database.
$ bin/console doctrine:migrations:diff
$ bin/console doctrine:migrations:migrate
You can copy the templates under tests/Application/templates/bundles/SyliusAdminBundle
into your own application to enable the possibility to add an automatic redirection when updating product
$ bin/console assets:install
This plugin allows you to create new redirects.
Under the new menu entry Redirects
unders Configuration
, you can manage redirects.
An entry is composed by:
- Source url, relative to your website
- Target URL, can be relative or absolute in case you want to redirect to another website
- Permanent or Temporary (This impact the HTTP response code of the redirection, 301 or 302)
- Enabled
- Redirect only if 404 (to manage potentially dead links)
There is a built-in security when creating/modifying redirection that prevent creating an infinite loop. This work with infinite recursive checking.
A second security is to prevent same source redirection leading to inconstant redirect.
There is a built-in feature that allows you to automatically create a redirection when changing a product slug. It also handles the case where it would create an infinite loop and remove the unnecessary redirect.
Example: Having a slug like /products/a
, renaming it to /products/b
then renaming it to /products/a
will result in a redirect from b
to a
and will automatically delete the one from a
to b
.