zend framework 2 路由指示更多分隔符

zend framework 2 routing indicate more delimiters

Zend 网站建议我可以将带有 url 定界符(“/”)的整个字符串映射到 zend 路由器中的一个 url 参数: Zend Framework 2 - Router

所以我创建了这条路线:

'myRoute' => array (
        'type' => 'segment',
        'options' => array (
                'route' => '/someAction/:params{-}',
                'defaults' => array (
                        'controller' => 'Application\Controller\myController',
                        'action' => 'someAction'
                )
        ),
        'may_terminate' => true,
),

由于这是 /myController 的子路由,我现在可以调用: http://myHost/myController/someAction/someParam1(someValue)/bookingCode(X79P00A3CB0002:000000010000000D000C80F601D))

这会产生一个名为 "params" 的路由参数,然后我可以自己分析和分解它。

这适用于上面指定的 URL,但不适用于此 URL: http://myHost/myController/someAction/someParam1(someValue)/bookingCode(aclGWciSaclGWciSaclGWciSmZmSaclsz1tF9KtSudlGWciSacl1eJlYeJl3edlWWYquHelC_IueXciSyJnSudl1eJlYeJlYedlw9KuYWsq4Kto0ielyrevSaclWWcmSadlYWYtiLevSmuroXYmSeKq-2-)

目前我认为我要么受到 URL 段长度限制的限制,但我没有收到任何类似的错误。 Zend 只是回答 "Requested page is not resolvable".

或者我不理解路线的“/:params{-}”部分。

有人可以解释或提供解决方案吗?

*编辑1: 所以我发现第二个 URL 中的“-”字符是问题所在,但我不明白为什么。如果我将它们从 URL 中删除,路由工作正常。

主要问题似乎是 url 中的连字符。 我将路线从分段类型更改为解决此问题。新路线如下所示:

'myRoute' => array (
    'type' => 'Zend\Mvc\Router\Http\Regex',
    'options' => array(
        'regex' => '/someAction/(?<params>[a-zA-Z0-9():/_-]*)',
        'defaults' => array(
            'controller' => 'Application\Controller\myController',
            'action' => 'someAction',
        ),
        'spec' => '/myController/%params%',
    ),
        'may_terminate' => true,
),

我不知道为什么连字符是个问题。所以如果有人能详细说明,我会很乐意标记为答案!