Пришёл по этому вопросу в поиске, так как лучший ответ старый, вот более современный из этого вопроса
Фронт-контроллер (index.php) гарантирует, что все, что является общим для всего сайта (например, аутентификация), всегда корректно обрабатывается, независимо от того, какую страницу вы запрашиваете. Если у вас есть 50 разных PHP-файлов, разбросанных повсюду, это сложно сделать. А что если вы решите изменить порядок загрузки файлов общей библиотеки? Если у вас есть только один файл, вы можете изменить его в одном месте. Если у вас есть 50 различных точек входа, вам необходимо изменить их все.
Кто-то может сказать, что загрузка всех распространенных вещей - это пустая трата ресурсов, и вам следует загружать только те файлы, которые необходимы для этой конкретной страницы. Правда. Но в современных PHP-фреймворках интенсивно используются ООП и автозагрузка, поэтому таких «отходов» больше не существует.
Фронт-контроллер также позволяет вам иметь красивые URL-адреса на вашем сайте, потому что вы абсолютно свободны в использовании любого URL-адреса, который вам нравится, и отправляете его на любой контроллер / метод, который вам нужен. В противном случае вы застрянете с каждым URL-адресом, заканчивающимся на .php, за которым следует ужасный список строк запроса, и единственный способ избежать этого - использовать еще более уродливые правила перезаписи в файле .htaccess. Даже WordPress, имеющий десятки различных точек входа (особенно в разделе администратора), заставляет самые распространенные запросы проходить через index.php, чтобы вы могли иметь гибкий постоянный формат.
Почти во всех веб-фреймворках на других языках используются отдельные точки входа, или, точнее, один скрипт вызывается для начальной загрузки процесса, который затем связывается с веб-сервером. Джанго работает так. CherryPy работает так. Это очень естественно сделать это в Python. Единственным широко используемым языком, позволяющим писать веб-приложения любым другим способом (кроме случаев, когда он используется как скрипт CGI старого стиля), является PHP. В PHP вы можете дать любому файлу расширение .php, и он будет выполняться веб-сервером. Это очень мощный инструмент, облегчающий изучение PHP. Но как только вы преодолеете определенный уровень сложности, подход с одной точкой входа начинает выглядеть намного привлекательнее.