Архив метки: перенаправление

Zend Framework 3 перенаправление страницы из модуля приложения

Задача: если не установлены куки, перенаправить пользователя на страницу авторизации, вне зависимости от первоначальной точки входа в приложение

Решение: про первой инициализации модуля, создаем событие onDispath, в котором смотрим куки, и если они нас не устраивают — меняем шаблон и перенаправляем на другой контроллер:

    public function init(ModuleManager $manager){       
        // Получаем менеджер событий.
        $eventManager = $manager->getEventManager();
        $sharedEventManager = $eventManager->getSharedManager();
        // Регистрируем метод-обработчик.            
        $sharedEventManager->attach(__NAMESPACE__, 'dispatch', [$this, 'onDispatch'], 100);
        
    }   
    // Обработчик события.
    public function onDispatch(MvcEvent $event){        
        if (Auth::GetCookies("randomid4")==false){            
            // Получаем контроллер, к которому был отправлен HTTP-запрос.
              $controller = $event->getTarget();
              // Получаем полностью определенное имя класса контроллера.
              $controllerClass = get_class($controller);
              // Получаем имя модуля контроллера.
              $moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\\'));
              $viewModel = $event->getViewModel();                  
              $viewModel->setTemplate('layout/login');                                                   
              $uri = $event->getRequest()->getUri();              
              $patch = $uri->getPath();              
                if ($patch!="/user/login"){
                      $uri->setPath('/user/login');
                      $response=$event->getResponse();
                      $response->getHeaders()->addHeaderLine('Location', $uri);
                      $response->setStatusCode(301);
                      $response->sendHeaders();
                    return $response;
                };                
        }
    }

 

Редирект по условию..

Задача: любой пользователь попадающий на сайт и у которого в адресной строке присутствует слово iptv должен  перенаправляется на один сайт, а все остальные — на другой.

Решение: правим .htaccess

RedirectMatch (.*)\.html$ http://132.212.112.1
RedirectMatch (.*)\iptv$ http://178.225.27.128/iptv/index.php
ErrorDocument 404 /iptv/index.php

Подробнее о регулярных выражениях:
В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:

Круглые скобки () используются для выделения групп символов.

Символ ^ обозначает начало строки.

Символ $ обозначает конец строки.

Символ . обозначает любой символ.

Символ | обозначает альтернативу. Например, выражения «A|B» и «(ABC|DEF)» означают «A или B» и «ABC или DEF» соответственно.

Символ ? ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать. Например, выражению «jpe?g» подойдет и строка «jpg», и строка «jpeg». Пример выражения с группой символов: «super-(puper-)?site».

Символ * ставится после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд. Например, выражению «jpe*g» подойдут строки «jpg», «jpeg» и «jpeeeeeeg».

Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, выражению «jpe+g» подойдут строки «jpeg» и «jpeeeeg», но не «jpg».

Квадратные скобки [] используются для перечисления допустимых символов. Например, выражение «[abc]» равносильно выражению «a|b|c», но вариант с квадратными скобками обычно является более оптимальным по быстродействию. Внутри скобок можно использовать диапазоны: например, выражение «[0-9]» равносильно выражению «[0123456789]». Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках. Например, выражение «[^0-9]+» означает строку из любых символов, кроме цифр.

Символ \ ставится перед спецсимволами, если они нужны в своем первозданном виде. Например, выражению «jpe\+g» соответствует только одна строка «jpe+g».

{3,9} — фигурные скобки означают диапозон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть равна или более 3 равна или менее 9 символов. Применяется в основном в модуле преобразований — синтаксис регулярных выражений преобразований, значение флагов. Пример, проверяем строку HTTP запроса отправленную браузером серверу на предмет совпадения ее содержания определенному шаблону:
♳ RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
♴ предположим что мы запросили индексную сраницу на сервере %{THE_REQUEST} = «GET /index.html HTTP/1.1»
♵ в таком случае мы читаем исходную строку содержащую фигурные скобки так «начало_полученных_данныхGETпробел/index.phpпробелHTTP/»
♶ т.е. может быть «GET», а может быть «POST» могут быть и другие значения… просто символы, в зависимости от того чем и как мы запросим файл index.php на сервере.

Все, что расположено после символа ‘#’, считается комментарием.