A veces, es necesario componer las URL con parámetros que pueden contener una barra inclinada /. Por ejemplo, tomemos la ruta clásica /hello/{name}. Por omisión, /hello/Fabien coincidirá con esta ruta pero no /hello/Fabien/Kris. Esto se debe a que Symfony utiliza este carácter como separador entre las partes de la ruta.
Esta guía explica cómo puedes modificar una ruta para que /hello/Fabien/Kris coincida con la ruta /hello/{name}, donde {name} es igual a Fabien/Kris.
De manera predeterminada, el componente Routing de Symfony requiere que los parámetros emparejen la siguiente expresión regular de ruta: [^/]+. Esto significa que todos los caracteres están permitidos excepto /.
Explícitamente tienes que permitir que el carácter / sea parte de tu parámetro especificando una expresión regular de ruta más permisiva.
_hello:
    path:     /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Demo:hello }
    requirements:
        name: ".+"
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
    <route id="_hello" path="/hello/{name}">
        <default key="_controller">AcmeDemoBundle:Demo:hello</default>
        <requirement key="name">.+</requirement>
    </route>
</routes>
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('_hello', new Route('/hello/{name}', array(
    '_controller' => 'AcmeDemoBundle:Demo:hello',
), array(
    'name' => '.+',
)));
return $collection;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class DemoController
{
    /**
     * @Route("/hello/{name}", name="_hello", requirements={"name" = ".+"})
     */
    public function helloAction($name)
    {
        // ...
    }
}
¡Eso es todo! Ahora, el parámetro {name} puede contener el carácter /.
