2009-12-17 85 views
2

含PARAM斜線這是我的代碼:允許在Zend_Controller_Router_Route_Regex

$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

Zend_Controller_Router_Route_Regex::match,它的路徑上呼籲urlencode馬上:

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


要戰勝的是,嘗試urlencodingname參數兩次:

$url = 'download/'.urlencode(urlencode('hey/there')); 
+0

這是一個解決辦法的確,但我d寧可要它不是一個破解 – EarthMind 2009-12-17 15:59:05

+1

你可以編寫自定義路由器 – SMka 2009-12-18 12:12:59