Здравствуйте!
Прошу помощи у специалистов по 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 так устроен? Или мои кривые руки так устроены?