@Bombadile

Почему неправильно работает редирект?

Есть метод инит в контроллере с двумя почти одинаковыми кусками кода: один делает перенаправления для ссылок с кодом плюса, а второй для ссылок с кодом пробела - все это заменяется обычным знаком плюса и перенаправляется на ссылку типа 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);
        }
    }

В чем дело?
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Где именно вставляете плюс/пробел? Если после символа "?", то все работает. Если до - роутер просто не находит подходящего контроллера.
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
проверьте что у Вас в $url когда там плюс. Но мне кажется это надо в htaccess делать, но начала сборки yii. Зачем ресурсы тратить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы