Most static asset servers will load index.html
files from paths automatically,
if they end in a trailing /
. However, Ember routes typically omit the /
, so
to get everything loading, without a redirect, I had to apply some tweaks. This
was completely stolen from the
Ember Guides App.
They use Prember there as well, and several of our techniques overlap.
Essentially, we just need to override the HistoryLocation
location, and
everything should “just work”.
// locations/history-location.js
import HistoryLocation from '@ember/routing/history-location';
export default HistoryLocation.extend({
formatURL() {
let url = this._super(...arguments);
if (url.includes('#')) {
return url.replace(/([^/])#(.*)/, '$1/#$2');
} else {
return url.replace(/\/?$/, '/');
}
}
});
For my use case specifically, I was using ember-router-scroll, and I just had to apply the same tweak there.
// locations/router-scroll.js
import EmberRouterScroll from 'ember-router-scroll/locations/router-scroll';
export default EmberRouterScroll.extend({
formatURL() {
let url = this._super(...arguments);
if (url.includes('#')) {
return url.replace(/([^/])#(.*)/, '$1/#$2');
} else {
return url.replace(/\/?$/, '/');
}
}
});
That’s all folks! More posts on all the pieces of my static blog setup coming soon!