tarheelreader.org の書き直しで同じ問題に遭遇しました。History.js を使用していますが、IE8 の更新の問題を除いて正常に動作しています。このハックは私のために働いています。
最初のページの読み込み時にのみ実行される私のスタートアップ コードでは、次のようにします。
var url = window.location.href;
if (url.indexOf('#') > -1) {
    // ie refresh hack
    controller.stateChange();
}
controller.stateChange()すべての履歴の変更に使用する状態変更ハンドラーはどこにありますか。
function stateChange() {
    // handle changes in the URL
    var hist = History.getState(),
        url = hist.url,
        context = hist.data;
    renderUrl(url, context).then(function(title) {
        document.title = title;
    });
}
main.js と controller.js のすべてのコードは、https: //github.com/gbishop/TarHeelReaderTheme で確認できます。
編集
さらに調査した結果、History.js がルートではなく初期 URL を使用しているケースにたどり着きました。このハックはそのケースを処理するようです。
function stateChange() {
    // handle changes in the URL
    var hist = History.getState(),
        url = hist.url,
        bar = window.location.href,
        context = hist.data;
    //console.log("State changed...", url, context);
    if (url != bar && bar.indexOf('#') > -1) {
        //console.log('bar = ', bar);
        // I think we only get here in IE8
        // hack for hash mode urls
        var root = History.getRootUrl(),
            hashIndex = bar.indexOf('#');
        if (root != bar.slice(0, hashIndex)) {
            // try to fix the url
            url = root + bar.slice(hashIndex);
            //console.log('new url =', url);
            window.location.href = url;
        }
    }
    renderUrl(url, context).then(function(title) {
        document.title = title;
    });
}