In order to make pages without hash fragments crawlable, you need to include
<meta name="fragment" content="!"> tag in the head of the HTML of your page.
However, full good solution for your case could be https://prerender.io/
The Prerender.io middleware that you install on your server will check each request to see if it's a request from a crawler. If it is a request from a crawler, the middleware will send a request to Prerender.io for the static HTML of that page. If not, the request will continue on to your normal server routes. The crawler never knows that you are using Prerender.io since the response always goes through your server.
As a custom solution you can use fallback pages