允许在Zend_Controller_Router_Route_Regex中包含包含斜杠的param

时间:2009-12-17 15:39:39

标签: regex zend-framework routes

这是我的代码:

$route = new Zend_Controller_Router_Route_Regex('download/([^/]+)(/([^/]+))?/(\d+)/(\d+)',
                                            array('controller' => 'download',
                                                  'action'     => 'load'),
                                            array(1 => 'name', 3 => 'or_name',
                                                  4 => 'p_id', 5 => 'c_id'));
$router->addRoute('download', $route);

应该允许第一个参数包含斜杠但是以urlencoded形式。但不幸的是,它不能使用我当前的代码,而是给我一个404错误。

那么,是否可以防止路由参数被urldecoded?

1 个答案:

答案 0 :(得分:1)

Zend_Controller_Router_Route_Regex::match内,它会立即在路径上调用urlencode

$path = trim(urldecode($path), '/');

要打败它,请尝试urlencoding name两次$url = 'download/'.urlencode(urlencode('hey/there')); 参数:

{{1}}