На многих сайтах это сделано не так, как вы думаете
Пример 1 (современный) -- одна точка входа
На сайте нет физических файлов с любым расширением, есть одна точка входа и есть роутер, который парсит строку с адресом и определяет -- какую часть системы вызвать,
Например /category/womens
Роутер парсит и отправляет в метод контроллера CategoryController
параметр url=womens
Этот экшн уже работает с БД и выбирает из нее нужную категорию с таким урлом и заодно все данные в придачу, потом это все выплевывает в верстку (как пример) и вы получаете страницу
Пример 2 -- старенький
До этого некоторые ЦМС делали так, точка входа одна index.php, но разруливанием какой контроллер вызвать -- занимался веб-сервер, а не роутер
Например в htaccess прописываются регулярные выражения, которые например адрес вида /category/womens
перенаправляют на адрес index.php?module=CategoryController&url=womens
Только вместо womens в htaccess записано выражение, соответствующее любой строке
Возможно вам это рано или вообще не нужно, так -- для развития, чтобы знали