Black Friday 2022 Offers 30% discount in Symfony, Twig and Sylius certifications (offer ends tomorrow)

How to Allow a "/" Character in a Route Parameter

Edit this page

Warning: You are browsing the documentation for Symfony 2.4, which is no longer maintained.

Read the updated version of this page for Symfony 6.2 (the current stable version).

How to Allow a "/" Character in a Route Parameter

Sometimes, you need to compose URLs with parameters that can contain a slash /. For example, take the classic /hello/{name} route. By default, /hello/Fabien will match this route but not /hello/Fabien/Kris. This is because Symfony uses this character as separator between route parts.

This guide covers how you can modify a route so that /hello/Fabien/Kris matches the /hello/{name} route, where {name} equals Fabien/Kris.

Configure the Route

By default, the Symfony Routing component requires that the parameters match the following regex path: [^/]+. This means that all characters are allowed except /.

You must explicitly allow / to be part of your parameter by specifying a more permissive regex path.

  • YAML
  • XML
  • PHP
  • Annotations
1
2
3
4
5
_hello:
    path:     /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Demo:hello }
    requirements:
        name: .+

That's it! Now, the {name} parameter can contain the / character.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.