url redirect

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Tivos
Сообщения: 41
Зарегистрирован: 2015.08.12, 12:34

url redirect

Сообщение Tivos »

Здравствуйте, подскажите как реализовать следующую задачу.
В БД есть таблица со связанными полями "old_url" и "new_url"
Задача:
при переходе по адресу, к примеру, my-site.loc/base/filter/category/3063/
найти эту запись в поле "old_url" и сделать редирект на соответствующий адрес с поля "new_url"
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: url redirect

Сообщение ElisDN »

1. Ищете запись по old_url
2. Если нашлось, то делаете редирект на new_url.
Tivos
Сообщения: 41
Зарегистрирован: 2015.08.12, 12:34

Re: url redirect

Сообщение Tivos »

=))
я так понимаю нужно создать класс с правилами для urlManager.
А что дальше делать не знаю, где делать делать редирект и как
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: url redirect

Сообщение ElisDN »

Либо правилом для UrlManager, либо просто отдельный экшен в контроллере сделать и в нём редиректить.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: url redirect

Сообщение Loveorigami »

Я вешал на errorHandler. Т.е когда ничего не находится, там и делаем запрос.
Идею взял отсюда.
https://github.com/amirax/yii2-seo-tool ... direct.php

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

class Redirect extends ErrorHandler {
    public function handleException($exception)
    {
        $redirectModel = SeoRedirects::find()
            ->where(['old_url' => Yii::$app->request->url])
            ->asArray()
            ->one();
        if(!empty($redirectModel)) {
            $redirectStatus = ($redirectModel['status'] == 302) ? 302 : 301;
            header("Location: " . $redirectModel['new_url'], true, $redirectStatus);
            exit;
        }
        parent::handleException($exception);
    }
}
 
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: url redirect

Сообщение zelenin »

а я делал генератор конфига для нджинкса, чтобы приложение не дергать. у нас 150+ тыс. редиректов.
Tivos
Сообщения: 41
Зарегистрирован: 2015.08.12, 12:34

Re: url redirect

Сообщение Tivos »

спасибо
Ответить