Многие роутеры работают по принципу domain.com/model/controller/id предположим мне или заказчику нужны адреса страниц вида: domain.com/kupit-sumku
Как реализовать здесь внутреннюю архитектуру проекта для MVC? Путь без id т.к. в этом адресе никакой параметр не передаётся, но хотя бы model и controller как понять какие вызывать?
Многие контроллеры также работают по принципу "перебрать все, на что настроганы роуты, а если ничего не совпало - это обрабатывает роут по умолчанию, поставленный на /:query". В нем и разбирайте этот запрос.
В MVC никаких изменений.
В базе можно вообще как первичный ключ использовать "kupit-sumku". Но, лучше все-таки первичным ключом оставить обычный ID, а kupit-sumku поставить ключ unique и при обращении искать в базе это вхождение.
Как хранить в БД это понятно. Нет ответа на главный вопрос - определения контроллера и потом модели обработчика. Название модели и контроллера которые будут обрабатывать эту запись тоже хранить в базе?
Оптимус Пьян, ну, надо отталкиваться от структуры проекта и URL'ов.
Если будете хаотично писать ссылки - то да.
Можно создать отдельную таблицу:
url | action
kupit-sumku | /products/?category=10
kupit-sumku-dior | /products/?id=123
Но, на вашем месте я бы объяснил заказчику, что профита в СЕО от этого будет ровно нисколько. Лучше писать нормальные урлы, аля:
/shop/sumki/1231-dior-chemodan