CakePHP’s routes allow for an easy way to serve content by using URL aliases.
Let’s take an example from the manual:
By having the user access the URL such as example.com/cooks/index simply shows the default view for example.com/users/index (as was our intention).
However, if you have a bunch of links on that page, which point to other actions in the Users controller, the URL’s will remain as example.com/users/some_other_action. In some cases it may not be desired, i.e. if a visitor entered the section of your site by using the “cooks” URL, you don’t want to suddenly confuse them by presenting a completely different link to other actions. Otherwise, you may simply wish to be consistent (or sneaky).
A simple override of the Helper::url() method allows us to solve this problem.
(Place the following in your app_helper.php)
if(strstr($this->params['url']['url'], 'cooks') && $url['controller'] == 'users') {
$url['controller'] = 'cooks';
}
return parent::url($url, $full);
}
That’s it, now any link that would otherwise point to example.com/users/some_other_action will now point to example.com/cooks/some_other_action.
p.s. You might want to add an additional check: isset($url[‘controller’])