makcv6
@makcv6
Люблю интернет

Как убрать дубли после настройки чпу-урлов в Yii2?

Здравствуйте!
Прошу помощи у специалистов по Yii2. Использую basic-приложение.

Прописал следующие настройки UrlManagera в config/web.php:
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => true,
            'rules' => [
                ['class' => 'app\components\SeoUrlRule', 'connectionID' => 'db'],
            ],
        ]


Также создал компонент наследующий класс UrlRule, в котором назначил методы createUrl и parseRequest, они преобразую route в slug и обратно, согласно таблице в бд.
И всё отлично работает (вообще Yii2 очень радует, только начинаю с ним знакомиться).
Но по стандартным адресам фреймворка (вида domen.com/index.php?r=category/index&id=2) мы попадаем на домашнюю страницу. Любые другие адреса, для которых нет соответсвия id - slug, выдают ошибку 404.
В методе parseRequest() у меня есть такой код:
elseif (!$request->getPathInfo()) {
            return [ 'home/index', [] ];
        }

То есть, если после имени домена ничего нету, мы не лезем в бд, чтобы найти соответствие этому слагу, а направляем на главную страницу. Но получается, что под это условие попадают и запросы вида domen.com/index.php?r=category/index&id=2, так как, если это условие убираю, то и подобные запросы и попытка войти на главную - ошибка 404.

Кто в курсе подскажите как сделать, чтобы эти адреса тоже выдавали 404? И нужно ли?

P.S. Изменил config/web.php:
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            //'enableStrictParsing' => true,
            'rules' => [
                //['class' => 'app\components\SeoUrlRule', 'connectionID' => 'db'],
            ],
        ]

То есть отключил класс, обрабатывающий урлы, и всё равно, при включённых PrettyUrl, урл вида /index.php?r=category/index&id=2 ведёт на главную. Это Yii2 так устроен? Или мои кривые руки так устроены?
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы