Вы можете сделать две вещи, обе с Маршрутами.
Во-первых, установка переменной в маршрутах:
Router::connect('/:user/blog/*', array('controller' => 'blogs', 'action' => 'index'));
И теперь вы можете получить доступ к пользовательской переменной с помощью $this->params['user']
. Дело в том, что вам придется вручную устанавливать каждый контроллер и действие, которым вы хотите управлять. Я думаю, что в этом нет ничего особенного, поскольку в большинстве случаев лучше переписать архитектуру маршрутов по умолчанию для CakePHP.
Во-вторых, вы можете сказать, что ожидаете переменную и будете доступны в качестве параметра в вашей функции.
Router::connect('/(.*)/*', array('controller' => 'blogs', 'action' => 'index'));
В вашем контроллере:
function index($a, $b){
pr($a);
pr($b);
}
А теперь вы получите оба варианта.
Я не знаю, можно ли это сделать автоматически, возможно, хорошей идеей будет переписать htaccess.
Надеюсь, это помогло.