Как прописывать динамические правила роутинга в Yii2?
Отдавайте разные вьюхи, но из одного controller#action.public function actionIndex()
{
    if ($this->user->role1) {
        $this->runActionForRole1();
    } else {
        $this->runActionForRole2();
    }
}
Решил через UrlRuleclass ProfileUrlRule implements UrlRuleInterface
{
    public function createUrl($manager, $route, $params)
    {
        if (preg_match('/^staff\//', $route)) {
            return str_replace('staff/', '', $route);
        }
        if (preg_match('/^customer\//', $route)) {
            return str_replace('customer/', '', $route);
        }

        return false;
    }

    public function parseRequest($manager, $request)
    {

        $pathInfo = trim($request->pathInfo, '/');
        $pathInfo = explode('/', $pathInfo);

        if (is_array($pathInfo) && $pathInfo[0] == 'profile' &&
            in_array(Yii::$app->user->identity->type, [UserHelper::TYPE_CUSTOMER, UserHelper::TYPE_STAFF])
        ) {
            if (Yii::$app->user->identity->type == UserHelper::TYPE_STAFF) {
                return [str_replace('profile', 'staff/profile', $request->pathInfo), []];
            } elseif (Yii::$app->user->identity->type == UserHelper::TYPE_CUSTOMER) {
                return [str_replace('profile', 'customer/profile', $request->pathInfo), []];
            }
        }

        return false;
    }
}