Изменение адреса панели управления

Нам приходит довольно много вопросов с просьбой рассказать как изменить адрес панели управления (иными словами "как сменить урл админки"). Некоторым это необходимо просто для себя, некоторым чтобы удовлетворить босса, привыкшего к /bitrix-admin/, некоторые считают, что таким образом делают свой ресурс более безопасным. В этой заметке мы расскажем как просто и быстро это сделать. Для начала вам необходимо ознакомиться с документацией по Yii, касающейся URL-роутинга, после чего прочитать про то, как Юпи! работает с конфигурационными файлами модулей. Поехали!

Правила роутинга для панели управления описаны вот в этих строчках основного конфигурационного файла https://github.com/yupe/yupe/blob/master/protected...

Как видно из настроек, по умолчанию панель управления сайтом доступна как http://mysite.ru/backend мы же хотим сделать чтобы "админка" была доступна как http://mysite.ru/admin

Для этого нам понадобится отредактировать всего один файл, а именно project.php Когда "Юпи!" производит слияние конфигов модулей, конфигов из userspace и основного конфига main.php, последним сливается именно файл project.php. Таким образом настройки, прописанные в этом файле имеют более высокий приоритет над всеми остальными (иными словами они их просто "перетрут"). Для переопределения урл-ов админки нам именно это и необходимо.

Итоговый файл project.php должен выглядеть вот так https://gist.github.com/yupe/93fb9d66a94d97bccf27:

<?php
return [
    'component' => [
        'request' => [
            'class'                  => 'yupe\components\HttpRequest',
            // пути, исключенные из csrf-валидации
            'noCsrfValidationRoutes' => ['admin/AjaxImageUpload', 'admin/AjaxFileUpload'],
        ]
    ],
    'rules' => [

        // старые пути к панели управления теперь отдают 404-ую ошибку
        '/backend'                                                     => false,
        '/backend/login'                                               => false,
        '/backend/<action:\w+>'                                        => false,
        '/backend/<module:\w+>/<controller:\w+>'                       => false,
        '/backend/<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' => false,
        '/backend/<module:\w+>/<controller:\w+>/<action:\w+>'          => false,
        '/backend/rbac/<controller:\w+>/<action:\w+>/<id:[\w._-]+>'    => false,

        //csrf
        '/backend/AjaxImageUpload' => false,
        '/backend/AjaxFileUpload'  => false,



        // новые пути для панели управления
        '/admin'                                                     => '/yupe/backend/index',
        '/admin/login'                                               => '/user/account/backendlogin',
        '/admin/<action:\w+>'                                        => '/yupe/backend/<action>',
        '/admin/<module:\w+>/<controller:\w+>'                       => '/<module>/<controller>Backend/index',
        '/admin/<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' => '/<module>/<controller>Backend/<action>',
        '/admin/<module:\w+>/<controller:\w+>/<action:\w+>'          => '/<module>/<controller>Backend/<action>',   
        '/admin/rbac/<controller:\w+>/<action:\w+>/<id:[\w._-]+>' => 'rbac/<controller>Backend/<action>',
    ]
];

После этого необходимо сделать еще две вещи:

  1. Удалить (если есть) файл /protected/runtime/cached_settings_web.php - кеш настроек
  2. Очистить кеш. Через панель управления этого сделать не получится, придется ручками очистить каталог с кешем (если кеширование в файл) или перезапустить memcache

После этого адрес панели управления будет http://mysite.ru/admin

Вот такой вот короткий, но полезный рецепт.

О чем вам еще хотелось бы узнать ?