Только что сделал вторую точку входа в своем проекте. Проект интенсивно использует УРЛ менеджер, настолько интенсивно, что я создал хтаксес файл как в мануале, только модифицировал его когда добавил вторую точку входа:
Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule admin.* backend.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
То есть все запросы вида /admin* обрабатывает файл backend.php
Отдельный конфиг был создан посредствоим копировния основного и добавления нужных урлов:
'urlManager'=>array( 'urlFormat' => 'path', 'urlSuffix' => '.html', 'showScriptName' => false, 'rules' => array( ................................................................................ '/admin' => 'admin/index', ), ),
В обоих конфигах стоит:
'user'=>array( 'allowAutoLogin' => true, 'loginUrl' => '/user/login' ),
В UserController::actionLogin:
public function actionLogin() { $form=new LoginForm; // collect user input data if(isset($_POST['LoginForm'])) { $form->attributes=$_POST['LoginForm']; // validate user input and redirect to previous page if valid if($form->validate()) $this->redirect(Yii::app()->user->returnUrl); } // display the login form $this->render('login',array('form'=>$form)); }
Тестируем так:
-
обращаемся к чему-то. что требует логина в фронтенде, редиректимся на стираницу логина, псоле успешного логина нас перебрасывает куда надо
-
Производин аналогичные действия для пути /admin.html - редиректимся в итоге в админку.
Все красиво, все работает.
Quote
открываю localhost/login.html - urlReferrer пустой, returlUrl равен index.php
Ну и правильно, первая страница, которую ты открыл - это ж логин, так что редиректить тебя некуда
Quote
Опять все правильно
Quote
А вот это ооочень странно
Я добился редиректа с админки на логин вот так:
public function accessRules() { return array( array('allow', // allow admins to perform the following actions 'actions'=>array('index'), 'users'=>array('@'), ), array('deny', // deny everything that was not allowed 'users'=>array('*'), ), ); }
У меня просто в приложении пока что групп пользователей нет - только обычные и залогиненные.