Codeigniter 4 - возможен ли маршрут без класса контроллера в URL?

Есть структура приложения, где маршруты обрабатываются стандартно domain.name/controller/method

Можно ли как то реализовать маршрутизацию без имени контроллера? То есть, запрос типа domain.name/article-alias система будет отправлять на отдельный контроллер, например как то так

$routes->add('/(:any)', 'Article::show/$1');

Чтобы получилась структура domain.name -> Заголовок отдельной статьи

И второй момент, можно ли реализовать маршрутизацию потому же принципу для пути

domain.name -> Имя категории товаров -> алиас товара

$routes->add('/(:any1)/(:any2)', 'Product::show/$1/$2');

При этом, разумеется, маршруты имеющие конкретные контроллеры должны обрабатываться как положено domain.name -> shop показывает страницу, вызванную контроллером Shop, так как такой контроллер существует

То есть, цель этого всего добиться уменьшения цепочки маршрута в URL, Буду очень признателен!


Ответы (1 шт):

Автор решения: ozornick

Все маршруты с :any нужно ставить по порядку, ближе к концу списка роутов. Первыми прописываются маршруты с известными методами (shop), если адрес не domain.name/shop то сработает следующий с :any Для множественных сегментов аналогично - начать с конкретных роутов, и завершить /:any/:any

Будет плохо, если маршрут совпадает с :any (shop допустим). Ожидая статью, получите контроллер Shop, всесто Article (из за порядка)

→ Ссылка