Направление более-менее правильное, но путь еще предстоит большой.
Что в роутинге делают htmlspecialchars и trim? Если в запросе пришел мусор, лучше не устраивать лотерею, а честно показывать 404. По крайней мере поначалу.
str_replace('/', '\\', $str)
Тестовый сервер на windows? В последствии он только на windows и будет крутится?
(Хинт: есть такая штука как
DIRECTORY_SEPARATOR)
Переменные с названиями $str и $str2 пораюдуют вас, когда вы попытаетесь вспомнить что делает этот код всего-лишь через полгодика.
if (file_exists ...
Не лучше ли поручить подключение классов
автолоадеру? Он специально для таких случаев и придуман.
Ну и
echo
с выводом ошибок в браузер - это жесть. Надеюсь, что это временная заглушка.