Но это очень ресурсозатратно, поэтому я хочу создать отдельный серверный обработчик, занимающийся абсолютно всеми обращениями к сайту. Допустим, если сайт называется asd.com, то любое обращение через asd.com (asd.com/registration, asd.com/documents/users, asd.com и т.д.) должно проходить через этот скрипт. Сам скрипт, считывая url запрос, выдавал бы определенный нужный файл, а сама строка url при необходимости изменялась бы при помощи js (pushState и replaceState например)
Ну, вы уже описали технологию, берете любой популярный веб-сервер - php, node.js, python, asp net и реализовываете.
А каким образом вообще можно организовать сервером обработку url
Любой запрос, прежде чем попасть на выполнение в серверный скрипт попадает на обработку на http сервер.
Скорее всего, вы будете работать с apache или nginx. Ответ на этот вопрос кроется в искусстве конфигурирования файла htaccess или nginx.conf.
PS: После того, как http сервер перенаправит запрос согласно правилам конфиг. файла до нужной точки входа - тому файлу-скрипту, с которого начнется выполнение кода на сервере, сам скрипт точки входа может передать управление другому исполняемому файлу компоненту или просто подключать нужные скрипты, согласно параметрам url. Этот процесс называется роутингом, а координирующий скрипт - роутер.
Если вы поищите "Роутер или роутинг в <любимая среда разработки/фреймворк>" то найдете пример реализации.
Причем, роутинг можно реализовывать, как на стороне сервера (роутинг php/laravel/node.js), так и на стороне клиента (клиентские фрейворки, например vue).
Самый наколеночный вариант
будет выглядеть так.
После того, как научитесь создавать многокомпонентное серверное приложение и связывать их, можете посмотреть, что такое Rest API, GraphQL, TreeQL.