Нужно сделать так, что когда пользователь попадает на сайт, ему сразу ставилась версия языка та, которая предпочтительная в браузере.
Не могу понять как правильно сделать редирект.
К примеру, есть домен
test.ru нужно после того как пользователя попал на страницу отправить его или поставить ссылку типа
test.ru/ru (сразу после загрузки).
Но все четно не понимаю как правильно настроить редирект подобного рода, у меня или TO_MENY_REDIRECTS или вообще в браузер уходи в цикилческую перезагрузку...
Кто сталкивался с такой задачей? Подскажите пожалуйста как правильно решить такой момент?
Ибо с подобным я сталкиваюсь не часто, да и гугл не дал ничего вразумительно по этому поводу. Выдавал только переключение через переключатель. Но у меня на сайте переключатель уже есть, нужно только то что я описал выше.
Приложу код метода класса:
public function redirectUrl()
{
$lang = $this->getBestMatch();
$uri = $_SERVER['REQUEST_URI'];
if( Yii::$app->request->cookies->has('current_language_id')) {
$lang_id = Yii::$app->request->cookies->get('current_language_id')->value;
$currentLang = Lang::findOne($lang_id);
$newLang = Lang::findOne(['url' => $lang]);
Yii::$app->response->cookies->add(new \yii\web\Cookie([
'name' => 'current_language_id',
'value' => $newLang->id
]));
$parseUri = $lang.$uri;
if(strpos($uri, $lang)) {
$parseUri = str_replace($currentLang->url,$newLang->url,$uri);
}
$url = Yii::$app->urlManager->createAbsoluteUrl('/');
// Yii::$app->response->redirect($url);
return 1;
} else {
$lang_id = Yii::$app->request->cookies->get('current_language_id')->value;
$currentLang = Lang::findOne($lang_id);
$newLang = Lang::findOne(['url' => $lang]);
Yii::$app->response->cookies->add(new \yii\web\Cookie([
'name' => 'current_language_id',
'value' => $newLang->id
]));
$parseUri = $lang.$uri;
if(strpos($uri, $lang)) {
$parseUri = str_replace($currentLang->url,$newLang->url,$uri);
}
$url = Yii::$app->urlManager->createAbsoluteUrl($parseUri);
// Yii::$app->response->redirect($url);
}
return false;
}