How do I make
domain.com/api/somecontroller/someaction
and
domain.com/somecontroller/someaction
point to the same controller action:
class somecontroller {
function someaction() {
}
}
Note: I don't want to re-route just one action. But I want to reroute all routes of domain.com/api/* to their corresponding URLs without the 'api' prefix.
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
I tried adding the following in 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');
It works fine for the rules defined. But I doesn't seem to cover all scenarios. Like it fails when you use URL params, or plugins and other advanced URLs.
Is there an easier way of accomplishing the task that I want?