библиотека роутинга фронтенд приложения тут ни при чем
если твой сервер просто раздает статику, то он действительно на роут
/login
будет пытаться найти файл login,
не найдет и вернет 404
так что в сингл пейдж апликейшн при переходе на
/login
ничего не запрашивается, просто js меняет внутренний стейт и рендерит новый DOM
при Ф5 идет запрос, файл не находится и получаешь 404
нужно раздавать статику чем-то с настройкой роутинга
и сказать примерно следующее
/
верни index.html
/login
верни index.html
<любой другой внутренний роут приложения>
- верни index.html
остальные пути пусть раздаются как статика (например чтобы запрос на
/static/js/main.js
вернул собственно SPA, ну и стили подтянулись)
я бы посмотрел на что-то вроде
https://caddyserver.com/docs/caddyfile/directives/route