The main pro is increased security, well that is if you configure your
By redirecting everything to public index file and denying access to application sources files, you outsource the access rights of files and directories to apache, which does a pretty good job at it.
Now those application files do not only contain your business logic but may as well contain sensitive information, such as database credentials, server API keys,.. Information you do not want anyone to see.
When apache takes care of denying access to those directories/files and rewriting the URI, you yourself can elegantly describe what and how is accessed.
A manual approach renders to be very complicated and you could easily make a mistake and have a file, which you wanted to be inaccessible, accessible.
The con is that every request hitting the server now needs to pass through this public index file. And when you create directory like
scripts where you wanna place code to be run by going to a URI in your browser, it usually does not work, because the framework does not realize you want to actually access a .php file (it will not even let you) and thinks you are trying to access a controller.
Obviously, this gets circumvented by running the script directly from let's say SSH, so it does not get through apache. But even then you need to think about your design and probably not put your bootstrapping logic (environment initialization,...) into the public index file - this is what luckily many frameworks do.
In the end, if you aren't coding for educational purposes I don't recommend you to whip out your own solution. There are many frameworks which use the single public index file methology and are quite mature and proved to work.
Along the frameworks FMJaguar has already mentioned, I'd highly recommend you the PhalconPHP framework.