?>

Как сделать редиректы в проекте на yii2 framework

Как сделать редиректы в проекте на yii2 framework

Создать компонент yii2

<?php
/**
 * @author Semenov Alexander <semenov@skeeks.com>
 * @link http://skeeks.com/
 * @copyright 2010 SkeekS (СкикС)
 * @date 19.03.2015
 */
namespace common\components;

use \Yii;
use yii\base\BootstrapInterface;
use yii\base\Component;
use yii\helpers\ArrayHelper;
use yii\web\Application;

/**
 * Редиректы
 *
 * Class V1Redirect
 * @package common\components
 */
class V1Redirect extends Component implements BootstrapInterface
{
    public $map = [
        
    ];

    public function bootstrap($application)
    {
        if ($application instanceof Application)
        {
            \Yii::$app->on(Application::EVENT_BEFORE_REQUEST, function($e)
            {
                if ($redirectUrl = ArrayHelper::getValue($this->map, \Yii::$app->request->url))
                {
                    \Yii::$app->response->redirect($redirectUrl, 301);
                    \Yii::$app->end(); 
                }
            });
        }

    }
}

 

Подключить в конфиг проекта

'components' => 
[
....
'V1Redirect' =>
[
    'class' => 'common\components\V1Redirect',
    'map' => [
         '/url1' => 'url2'
    ],
],
...

 

Добавить а загрузку

'bootstrap' => ['V1Redirect'],

 

Все комментарии (2)
Если место с \Yii::$app->response->redirect($redirectUrl, 301); не сработает. Можно воспользоваться стандартной функцией php header(); die;
Тестовый комментарий