@dobbel Ahh, thank you! That worked. The key was I needed to remove publicPath entirely from quasar.conf.js, not just set it to a relative path.
So, to recap for anyone else looking for an answer to this problem. If you want to build a quasar app such that the build can be mounted under arbitrary base paths, you need to:
Set vueRouterMode to ‘hash’
Set publicPath to null, or don’t set it all.
I may play around in my spare time with seeing if I can patch things up to get history mode to work with a relative public public path and post back here if I get something working.