Php 带斜杠的ZF2路由参数

Php 带斜杠的ZF2路由参数,php,routes,zend-framework2,zend-route,slash,Php,Routes,Zend Framework2,Zend Route,Slash,是否可以使用包含正斜杠的参数组合管线 配置: 'someroute' => array( 'type' => 'Zend\Mvc\Router\Http\Segment', 'options' => array( 'route' => 'someroute/:path', 'defaults' => array( 'controller

是否可以使用包含正斜杠的参数组合管线

配置:

'someroute' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment',
       'options' => array(
                'route' => 'someroute/:path',
                'defaults' => array(
                    'controller' => 'Controller',
                    'action' => 'index'
                ),
                'constraints' => array(
                    'path' => '(.)+'
                )
       )
 )
$path = 'some/subdirectory';
$this->url('someroute', array('path' => $path));
控制器:

'someroute' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment',
       'options' => array(
                'route' => 'someroute/:path',
                'defaults' => array(
                    'controller' => 'Controller',
                    'action' => 'index'
                ),
                'constraints' => array(
                    'path' => '(.)+'
                )
       )
 )
$path = 'some/subdirectory';
$this->url('someroute', array('path' => $path));
结果:

http://host.name/someroute/some%2Fsubdirectory

在视图中使用
rawurldecode()
当然可以解决这个问题。

只需使用
regex
路由类型:

'path' => array(
    'type' => 'regex',
    'options' => array(
        'regex' => '/path(?<path>\/.*)',
        'defaults' => array(
            'controller' => 'explorer',
            'action' => 'path',
        ),
        'spec' => '/path%path%'
    )
)
“路径”=>数组(
'type'=>'regex',
“选项”=>数组(
“regex'=>”/path(?\/.*),
“默认值”=>数组(
“控制器”=>“资源管理器”,
“操作”=>“路径”,
),
'spec'=>'/path%path%'
)
)

我遇到了类似的问题,因此我将使用Zend 3找到的解决方案发布到我的项目中

默认情况下,Symfony/Zend路由组件要求 参数与以下正则表达式匹配:[^/]+。这意味着 除了/,允许使用所有字符

您必须通过以下方式明确允许/成为占位符的一部分: 为其指定更宽松的正则表达式:

基本上,您可以允许所有字符,然后在操作中检查/trycatch/validate

参考:

这绝对是有意为之,而非所愿<在您的示例中,code>path被视为一个参数,因此得到urlencoded。其他一切都会带来安全风险,这是一个非常不令人满意的答案。我想以一种seo友好的方式映射一棵树。不可能动态生成子文件夹。例如:我有一个分类树,需要以下URI:
/taxonomy/term1/term1subterm1/term1subterm1subterm1/
/taxonomy/term1/term1/term1/term1subterm2/term1subterm1/
/taxonomy/term1/anoterhterm1/