Below is an example URL structure with rewrite rules using an Apache .htaccess file.
GET /a/ => a/index.php
GET /a/b/ => a/b/index.php
GET /a/b/c/ => a/b/index.php
This URL mapping will give you pretty URLs in PHP without needing to route all requests through a single PHP file or "front controller" pattern.
Each sub folder will have it's own index.php file, thus avoiding the need to use .php
extension and pass argument info via query params (not that there is anything wrong with that!).
The PHP development server php -S localhost:5000
behaves this way too, so you can easily achieve development and production parity.
Pop this into an .htaccess
file in the document root of your project.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 3 levels deep
# GET /a/b/c-some-thing-here
RewriteRule (.*)/(.*)/(.*) /$1/$2/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 4 levels deep
# GET /a/b/c/d-some-thing-here
RewriteRule (.*)/(.*)/(.*)/(.*) /$1/$2/$3/index.php [L]
Note that this rewrite rule does not work with arbitrary directory depths. You will have to add more rules to handle deeper folder structures.
I haven't spent too much time on it but should be possible to write a regex that will capture and map an entire folder path (minus the last segment) to relative file path of an index.php file!
Just finishing up brewing up some fresh ground comments...