UIルーターとExpressでAngularを使用しています。UIルータのバックボタンは、index.htmlのすべてのアセットを再リクエストしますが、接頭辞はhtml5modeです。
私は
$locationProvider.html5Mode(true);
を設定して、私のindex.html
ファイルの<head>
で<base href="/">
を持っています。
私のサーバーでは、リクエストが既存のAPIまたはアセットのいずれかと一致しない場合はindex.html
というキャッチオールルートがあります。
app.route('/*')
.get(function(req, res) {
console.log('the req.url', req.url);
console.log('sending index.html', path.resolve(app.get('appPath') + '/index.html'));
res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
});
これは非常にうまくいきます。ユーザーは$state.go
を使用して状態をナビゲートし、ブラウザの更新ボタンでこれらの状態を更新することができます。私はその後、stateC
に、その後stateB
に、その後stateA
に移動した場合
しかし、アプリが正常に戻っstateB
に移行browser back button
をヒットし、その後index.html
内のすべてのアセットのためのAJAX要求を行うが、stateB
結果のためにルートで始まりますアプリケーションをクラッシュさせるエラーの長いストリームです。
これらのエラーは、ここに...私のサーバーは、何度も何度もindex.html
を送信することにより、これらの要求に応答しているとの要求が.js
ファイルのためのものであるという事実に起因しているサーバーのログ
です私はindex.html
を送信した後、フロントエンドはindex.html
にすべての資産に対する要求を行いますが、ルートで始まるので、私はonboard-introbower_components/*
研の要求を取得していますか
予告ead of bower_components/*
。 /onboard-intro
を指しているときにブラウザをリフレッシュすると、これは起こらないことに注意してください。私は単純に1つのリクエストを受け取り、index.html
を送信して動作します。
私は研究の多くの時間を行っていると、このような状況にマッチした別のSO質問を見つけることができませんでした。助けが大いにありがとう!