Php Zend Framework 2路由中的编码参数

Php Zend Framework 2路由中的编码参数,php,zend-framework2,Php,Zend Framework2,我在为我的ZF2项目设置路由参数时遇到问题。我希望能够将URL作为参数传递给页面,但每次尝试都会导致404 我已经创建了一个URL模块,并希望对其进行设置,以便以下控制器将URL作为id参数传入。控制器扩展了AbstractRestfulController类,因此下面的示例将使用get($id)方法 控制器地址: http://localhost/url/ 使用参数: http://localhost/url/http://www.google.co.uk my module.config

我在为我的ZF2项目设置路由参数时遇到问题。我希望能够将URL作为参数传递给页面,但每次尝试都会导致404

我已经创建了一个URL模块,并希望对其进行设置,以便以下控制器将URL作为id参数传入。控制器扩展了AbstractRestfulController类,因此下面的示例将使用get($id)方法

控制器地址:

http://localhost/url/
使用参数:

http://localhost/url/http://www.google.co.uk
my module.config.php的路由器部分如下所示:

'router' => array(
    'routes' => array(
        'url' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/url[/][:id]',
                'defaults' => array(
                    'controller' => 'URL\Controller\URL',
                ),
            ),
        ),
    ),
),
如果我必须传递encode参数,那么它就不会是世界末日,尽管我不希望这样

使用参数编码:

http://localhost/url/http:%2F%2Fwww.google.co.uk

这并不是直接针对你的问题,但我建议你稍微调整一下路线!目前,您的路线将匹配太多,即使是:

http://localhost/url1
我认为你不想处理这个问题,我的建议是:

'type'    => 'segment',
'options' => array(
    'route'    => '/url[/[:id]]',
    'defaults' => array(
        'controller' => 'URL\Controller\URL',
    ),
    'constraints' => array(
        'id' => '<InsertURLRegexHere>'
    )
)
“类型”=>“段”,
“选项”=>数组(
“路由”=>“/url[/[:id]]”,
“默认值”=>数组(
'controller'=>'URL\controller\URL',
),
'约束'=>数组(
'id'=>'
)
)
与您的问题更相关的是:ViewHelpers会自动对重要字符进行URL编码,如中所示,
encode()
buildPath()中使用


您的行为具体发生在哪里?您是否确定不仅仅是浏览器为了查看而解码url?Chrome喜欢做这种事情^ ^

谢谢Sam。我现在添加了以下约束:'constraints'=>array('id'=>'(https?:\/\/)?([\da-zA-Z\.-]+)\([a-zA-Z\.]{2,6})([\/\w\.-]*)*/'),它正在工作!我现在可以作为URL的一部分传递。非常感谢。