CakePHPでコントローラーより前にユーザーネームなどを動的に入れたいときのルーティング方法

domain.com/username/controller/action
のようなルーティングをやりたいときの方法。

なおCakePHPにはプレフィックスルーティングという方法がありますがプレフィックスを事前に決めておかないといけないので動的に設定したい場合に困る。

qiita.com

方法は特に難しいことはなく、routes.phpにルーティングの設定を書けば良い。

Router::connect(
    '/:username/:controller/:action/*',
    array('username' => '[a-z]+')
);

usernameは正規表現で好きなように定義できます。

アクセス方法

任意のコントローラーで

pr($this->params['username']);

てな感じで取れます。