Редирект страниц со слешом на без слеша в контроллере.

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

Редирект страниц со слешом на без слеша в контроллере.

Сообщение wpd »

Добрый день. Можно ли как то в контроллере как то сделать такое? в hataccess не могу, так как некоторый функционал перестал работать, а так как мне это нужно исключительно для фронта, то интересует это решение с помощью контроллера.

нужно
site/products/ -> site/products и т.д.

Так же есть проблема, в некоторых ссылках (категориях) которые работают с помощью одного и того же контроллера. при попытке зайти site/products/catname/ перекидывает на 404 и к ссылке добавляет /%7B/%7D в конец.
Download TV Series in HD http://serialsfree.net/
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Редирект страниц со слешом на без слеша в контроллере.

Сообщение SiZE »

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

class BaseController extends CController {
    public function init() {
        parent::init();
        // Remove any double slashes and force a trailing slash to the request URI
        $requestUri = Yii::app()->request->requestUri;
        $repairedRequestUri = $requestUri;
        while (false !== strpos($repairedRequestUri, '//')) {
            $repairedRequestUri = preg_replace("////", '/', $repairedRequestUri);
        }
        if (false === strpos($repairedRequestUri, '?') && '/' !== substr($repairedRequestUri, strlen($repairedRequestUri) - 1, 1)) {
            $repairedRequestUri = "{$repairedRequestUri}/";
        }
        elseif('/' !== substr($repairedRequestUri, strpos($repairedRequestUri, '?') - 1, 1)) {
            $repairedRequestUri = substr($repairedRequestUri, 0, strpos($repairedRequestUri, '?')).'/'.substr($repairedRequestUri, strpos($repairedRequestUri, '?'));
        }
        if ($repairedRequestUri !== $requestUri) {
            Yii::app()->request->redirect($repairedRequestUri, true, 301);
        }
    }
}
source http://www.yiiframework.com/forum/index ... -for-urls/
lerevolte
Сообщения: 29
Зарегистрирован: 2013.09.27, 18:06

Re: Редирект страниц со слешом на без слеша в контроллере.

Сообщение lerevolte »

Решение скинутое выше работает, но если его использую, то из форм не передаются post данные. что-то еще нужно добавить?
Ответить