Perhaps you have two related problems: you use push state client-side (that is, you use "real" URLs, not hash fragments like / app # overview), but (maybe) did not enable push state in Backbone, and your express configuration does not respond to these client routes.
Using push status URLs, you still have to process these server-side URLs, as the user can visit your site using these direct client-side URLs (something that doesn't happen with hash fragments, since the hash part is never sent to the server).
So, to fix server-side processing, express allows you to use regular expressions as routes, so instead of:
app.get('/app', function(req, res) {
You can do (see here ):
Thus, no matter what URL / application / * is used as an entry point to your web application, it receives the necessary content.
Then, on your side of the baseline initialization, you must start history management with Backbone.history.start({pushState: true}) to activate the push state. See here .
source share