И снова УРЛ

Всем привет.

Собственно проблема вот в чем:

Сделал как в кукбуке разделение на backend и frontend.

В htaccess прописал




Options +FollowSymLinks

IndexIgnore */*

RewriteEngine on


# Make the backend accessible via url: http://site/backend.

RewriteRule ^sysadmin backend.php


# If a directory or a file exists, use it directly.

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d


# Otherwise forward it to index.php.

RewriteRule . index.php



Теперь в настройках backend прописываю урлы:


        'urlManager'=>array(

            'urlFormat'=>'path',

            'showScriptName'=>false,

            'rules'=>array(

                'sysadmin/users' => 'user/default',

                'sysadmin/users/<controller:\w+>/<id:\d+>'=>'user/<controller>/view',

                'sysadmin/users/<controller:\w+>/<action:\w+>/<id:\d+>'=>'user/<controller>/<action>',

                'sysadmin/users/<controller:\w+>/<action:\w+>'=>'user/<controller>/<action>',

            ),

        ),

Можно ли задать как-нить "sysadmin" в урлах, чтобы не прописывать его в каждом правиле?

Думал через baseUrl, да чет не получается. Суфикс в урлах есть, а префикса нет случаем?

Нет, префикса нету, но никто не мешает вам отнаследоваться от стандартного CUrlManager и легко решить вашу псевдо-проблему

По-моему, префикс, за исключением такой ситуации, больше нигде не пригодится, поэтому нужно решать задачу вручную…

Самый простой вариант - задать showScriptName=>true и не париться над правилами вообще, вот только адреса будут вида backend.php/controller/action, что, вероятно, вас не очень устроит.

Другой вариант - до или после задания правил поместить небольшую процедурку, которая автоматически вставит "sysadmin" (там же можно вставить и общие правила с <controller> и <action>).

Ну и продвинутый вариант - унаследовать UrlManager и добавить новое свойство "prefix".

Не думаю, что менять baseUrl было бы правильным решением.

P.S. Сам не использую urlManager в backend, поэтому по реализации последних двух вариантов пока сказать нечего :) Буду рад, если поделитесь мыслями и решениями.

Видимо самое нормальное решение - унаследовать класс UrlManager’а и внести поправки :)