diff --git a/routing.rst b/routing.rst index 90d16688ad9..2e111053167 100644 --- a/routing.rst +++ b/routing.rst @@ -1612,6 +1612,59 @@ and its URL will be ``/blog/{_locale}``. The route of the ``show()`` action will will also validate that the ``_locale`` parameter matches the regular expression defined in the class annotation. +.. note:: + + If any of the prefixed routes defines an empty path, Symfony adds a trailing + slash to it. In the previous example, an empty path prefixed with ``/blog`` + will result in the ``/blog/`` URL. If you want to avoid this behavior, set + the ``trailing_slash_on_root`` option to ``false`` (this option is not + available when using PHP attributes or annotations): + + .. configuration-block:: + + .. code-block:: yaml + + # config/routes/annotations.yaml + controllers: + resource: '../../src/Controller/' + type: annotation + prefix: '/blog' + trailing_slash_on_root: false + # ... + + .. code-block:: xml + + + + + + + + + + + .. code-block:: php + + // config/routes/annotations.php + use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; + + return function (RoutingConfigurator $routes) { + $routes->import('../../src/Controller/', 'annotation') + // the second argument is the $trailingSlashOnRoot option + ->prefix('/blog', false) + + // ... + ; + }; + .. seealso:: Symfony can :doc:`import routes from different sources `