这是我的代码:
$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?
答案 0 :(得分:1)
在Zend_Controller_Router_Route_Regex::match
内,它会立即在路径上调用urlencode
:
$path = trim(urldecode($path), '/');
要打败它,请尝试urlencoding
name
两次$url = 'download/'.urlencode(urlencode('hey/there'));
参数:
{{1}}