Здравствуйте, подскажите как реализовать следующую задачу.
В БД есть таблица со связанными полями "old_url" и "new_url"
Задача:
при переходе по адресу, к примеру, my-site.loc/base/filter/category/3063/
найти эту запись в поле "old_url" и сделать редирект на соответствующий адрес с поля "new_url"
url redirect
Re: url redirect
1. Ищете запись по old_url
2. Если нашлось, то делаете редирект на new_url.
2. Если нашлось, то делаете редирект на new_url.
Re: url redirect
=))
я так понимаю нужно создать класс с правилами для urlManager.
А что дальше делать не знаю, где делать делать редирект и как
я так понимаю нужно создать класс с правилами для urlManager.
А что дальше делать не знаю, где делать делать редирект и как
Re: url redirect
Либо правилом для UrlManager, либо просто отдельный экшен в контроллере сделать и в нём редиректить.
-
- Сообщения: 977
- Зарегистрирован: 2014.08.27, 21:54
Re: url redirect
Я вешал на errorHandler. Т.е когда ничего не находится, там и делаем запрос.
Идею взял отсюда.
https://github.com/amirax/yii2-seo-tool ... direct.php
Идею взял отсюда.
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);
}
}
Re: url redirect
а я делал генератор конфига для нджинкса, чтобы приложение не дергать. у нас 150+ тыс. редиректов.