2016-12-08 4 views
0

私はhtml5スタイルのルーティング(ハッシュではなくスラッシュ)を使用している点を除いて、静的ファイルのホスティングより多くを必要とすべきではないWebアプリケーション(WebpackでAngular 2を使用しています)を持っています。 AWS S3 Bucketでホストしたいと思います。ユーザーが自分のアプリのルートに行くと、S3バケットはindex.htmlを提供し、すべてうまくいきます。ユーザーがルータを使用してmyapp.com/routenameに移動するためのボタンをクリックした場合、技術的にはページのリロードがないため、正常に動作します。しかし、ユーザーのエントリポイントがmyapp.com/routenameの場合、ブラウザはそのURLへのget要求を行い、S3はindex.htmlが応答する必要があることをS3が認識しません。私はS3ルーティング設定を使用しようとしました...しかし、ルーティング設定は、実際にはurlbarのURLを変更するリダイレクトを行うことができるようです。たとえば、myapp.com/routenameをmyapp.comにリダイレクトすると、そのURLでindex.htmlを提供するだけでなく、実際にはブラウザのURLが変更され、ユーザーは「/」ルートに戻ります。 リダイレクトの代わりに通常のルーティングを設定する方法とS3バケットがありますか?html5スタイルのルーティングで動作するようにAWS S3バケットルーティングを設定するにはどうすればよいですか?

+1

関連する? http://stackoverflow.com/questions/28063945/configure-amazon-s3-static-site-with-angular-js-ui-router-html5modetrue-on-pag – jarmod

+0

AWSフォーラムのhttps://での投稿ですforums.aws.amazon.com/thread.jspa?threadID=244746 – John

+0

@jarmodはい、ありがとう、ハッシュを追加して(そして角度をもう一度削除する)、それはうまくいくようだが、私はそこにあるべきだと思うこれはハッシュをまったく使用しません。 – John

答えて

1

理論的には、index.htmlを404.htmlのようなものにコピーし、このファイル名をS3設定の「エラードキュメント」セクションに入力します。表示するページがない場合(エラー404)、S3はそのドキュメントを表示します。

それはうまくいくはずですが、それは恐ろしい考えです。ブラウザはHTTPヘッダーに404のHTTPコードを受け取ります。

+0

はい「ドキュメントが見つかりません」というシナリオを扱うのはまともな解決策です。 404を返すことは間違いなく理想的です。私は、CloudFrontサイドでこれを行うと、200を返すことができることがわかりました。 – John

関連する問題