Проблема здесь не в вашем языке сценариев, а в настройке вашего веб-сервера. Я буду ссылаться на них по именам Apache, но эти функции должны быть доступны на большинстве веб-серверов.
Существует три функции, которые вы можете использовать:
1) согласование содержимого (mod_negotiation), которое позволяет вашему веб-серверу попробовать указанный список расширений в указанном порядке, например: http://example.com/foo может быть http://www.example.com/foo.html или http://example.com/foo.php
2) DirectoryIndex, который сообщает веб-серверу, что когда клиент запрашивает http://example.com, он должен искать указанный список файлов по порядку, поэтому он может работать на сервере http://example.com/index.html или http: /example.com/index.php
3) mod_rewrite, который позволяет вам переписать формат URL, полученный сервером. Это позволяет вам делать такие вещи, как перевод http://example.com/foo/bar/baz на http://example.com/foo/bar.php?page=baz
Все остальное выполняется кодом скрипта бэкэнда как обычно.