I decided to solve this problem by causing a silent transition to the root in advance:
var url = window.location.pathname.substr(Backbone.history.root.length); this.navigate('/', { trigger: false }); this.navigate(url, { trigger: true });
Keep in mind that this will create an additional history record, but in my case this is not important.
You can also make it work without writing a history by changing the fragment property of the Backbone.history object, but this property should be private, so I would think twice before spoofing it :)
The fragment property is what is used to map the current URL to the URL that is passed to the navigation function, and thus the route will be executed if they do not match.
source share