1
我如何CakePHP的前綴路由
domain.com/api/somecontroller/someaction
和
domain.com/somecontroller/someaction
指向同一個控制器動作:
class somecontroller {
function someaction() {
}
}
注:我不想重新路由只是一個動作。但是我想將所有路由的domain.com/api/*重新路由到它們對應的URL,而不用'api'前綴。
e.g:
domain.com/api/controller -> domain.com/controller
domain.com/api/controller/action -> domain.com/controller/action
domain.com/api/controller/action/param -> domain.com/controller/action/param
domain.com/api/controller/action?key=val -> domain.com/controller/action?key=val
我嘗試添加在routes.php文件如下:
Router::connect('/api', array('controller'=>'index', 'action'=>'index'));
Router::connect('/api/:controller', array('action'=>'index'));
Router::connect('/api/:controller/:action');
Router::connect('/api/:controller/:action.:ext');
它工作正常的定義的規則。但我似乎並未涵蓋所有情況。就像使用URL參數或插件和其他高級URL時失敗一樣。
有沒有更簡單的方法來完成我想要的任務?
_「是否有更簡單的方法來完成我想要的任務?」是的,這就是所謂的mod重寫。 – Rob
你不需要mod_rewrite,蛋糕路由系統負責一切。您可以使用通配符和佔位符,請參閱下面的答案。 – Happy
無論你是否需要,mod重寫仍然是一種更好,更有效的方式來處理這種情況。只是在說... – Rob