PHP не очень приспособлен для этого. Клиентскую логику для SPA/UI-приложения лучше реализовать готовыми библами или фреймворками.
Пример на Vue (с поддержкой абстракции RewriteEngine):
https://fairy-tales-for-you.web.app/ На ванильном javascript (без поддержки сервера):
https://local-disc.firebaseapp.com/menu/articles/HashRouter.html#/main