Такая ситуация, если допустим попытаться открыть страницу по такому вот адресу:
localhost/404
То мы попадаем на стартовую страницу и так с любыми цифрами, т.е. адреса, которые начинаются с цифр всегда приводят на стартовую страницу, хотя не контроллеров, не методов соответствующих нет, обработка несуществующих контроллеров или действий отправляет на 404 страницу, но вот цифровые запросы никогда не отправляет на 404 страницу.
Эту проблему как-то можно решить, кто знает?
Вот роутинг:
$di->set(
'router',
function () {
$router = new Router();
$router->setDefaultModule('frontend');
$router->add('/:action', [
'module' => 'frontend',
'controller' => 'index',
'action' => 1,
]);
$router->add('/:action/:params', [
'module' => 'frontend',
'controller' => 'index',
'action' => 1,
'params' => 2,
]);
$router->add('/:module/:controller/:action/:params', [
'module' => 1,
'controller' => 2,
'action' => 3,
'params' => 4,
]);
$router->removeExtraSlashes(true);
return $router;
}
);
Вот обработчик ошибок в дефолтном модуле:
$dependencyInjector->setShared(
'dispatcher',
function () {
$eventManager = new Manager();
$eventManager->attach(
'dispatch:beforeException',
function ($event, $dispatcher, $exception) {
switch ($exception->getCode()) {
case Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
case Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
$dispatcher->forward([
'controller' => 'error',
'action' => 'notFound',
]);
return false;
}
}
);
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace('AudioOcean\Frontend\Controllers');
$dispatcher->setEventsManager($eventManager);
return $dispatcher;
}
);
Вот кстати для наглядности что показывает команда в представлении index: