Не срабатывает редиретк на заглушку сайта.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Не срабатывает редиретк на заглушку сайта.

Сообщение slo_nik »

Добрый вечер.
Есть простенькое решение, как перевести посетителей сайта на страницу-заглушку.

Код: Выделить всё

    'on beforeAction' => function($event) use ($params){
        // массив с логинами пользователей, которым разрешён доступ $params['usersArray'];
        // массив с именами контролеров, к которым запрещён доступ $params['controllerArray'];
        $controllerId = $event->action->controller->id;
        if(!in_array(Yii::$app->user->identity->username, $params['usersArray'])){
            if(in_array($controllerId, $params['controllerArray'])){
                return Yii::$app->response->redirect(['offline/']);
            }
        }
    },
Но проблема в том, что строка return Yii::$app->response->redirect(['offline/']); работает не так, как мне нужно.
Если всё оставить так, как сейчас, то переадресация зацикливается.
Если же добавить код ответа "200" в return Yii::$app->response->redirect(['offline/']); - переадресация вообще не происходит.
Как заставить это работать?

p.s. Переход по адресу http://localhost/offline работает, открывается страница-заглушка.
Аватара пользователя
carono
Сообщения: 52
Зарегистрирован: 2018.04.28, 11:05

Re: Не срабатывает редиретк на заглушку сайта.

Сообщение carono »

может id=offline акшена добавить также в список игнора при редиректе?
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: Не срабатывает редиретк на заглушку сайта.

Сообщение slo_nik »

carono писал(а): 2018.10.11, 16:54 может id=offline акшена добавить также в список игнора при редиректе?
Это действие в контролере SiteController, а сам id контролера находится в массиве $params['controllerArray']
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Не срабатывает редиретк на заглушку сайта.

Сообщение someweb »

return Yii::$app->response->redirect(['/offline']);
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: Не срабатывает редиретк на заглушку сайта.

Сообщение slo_nik »

someweb писал(а): 2018.10.11, 17:11 return Yii::$app->response->redirect(['/offline']);
Пробовал разные варианты, Ваш вариант тоже. В итоге зацикливание редиректа.
В логах apache2 получаю за раз несколько одинаковых строк типа таких

Код: Выделить всё

127.0.0.1 - - [11/Oct/2018:17:45:10 +0300] "GET /yii2_dev/ HTTP/1.1" 302 130368 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
127.0.0.1 - - [11/Oct/2018:17:45:10 +0300] "GET /yii2_dev/offline/ HTTP/1.1" 302 28001 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
*****************
****************
127.0.0.1 - - [11/Oct/2018:17:45:10 +0300] "GET /yii2_dev/offline/ HTTP/1.1" 302 28001 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: Не срабатывает редиретк на заглушку сайта.

Сообщение slo_nik »

В общем вопрос вроде решился.
Ошибка была в том, что я запихнул действие offline в контролер, который потом "закрыл". И получается, что при попытке перейти на действие offline шло зацикливание.
Ранее я делал подобное, но "закрывал" отдельные действия, а не целиком контролер. В этом случае всё работает в одном контролере, и "закрытые" действия и действие offline.
Сейчас вынес заглушку в отдельный контролер и всё стало на свои места.
Ответить