Есть метод инит в контроллере с двумя почти одинаковыми кусками кода: один делает перенаправления для ссылок с кодом плюса, а второй для ссылок с кодом пробела - все это заменяется обычным знаком плюса и перенаправляется на ссылку типа site.ru/category+product. Но работает только перенаправление для ссылки с кодом пробела. Для кода плюса - 404, причем в контроллер приземляется и даже команда redirect отрабатывает.
public function init()
{
parent::init();
$url = Yii::$app->request->url;
$host = Yii::$app->request->hostInfo;
// redirect pages with %2B - plus
if ((strpos($url, '%2B') !== false)) {
$newUrl = str_replace('%2B', "+", $url);
return $this->redirect($host.$newUrl, 301);
}
// redirect pages with %20 - space
if ((strpos($url, '%20') !== false)) {
$newUrl = str_replace('%20', "+", $url);
return $this->redirect($host.$newUrl, 301);
}
}
В чем дело?