私は HTML5 pushStates を使用する JavaScript アプリをホストするために S3 を使用しています。問題は、ユーザーがいずれかの URL をブックマークすると、何も解決されないことです。必要なのは、完全なリダイレクトを行うのではなく、すべての URL リクエストを受け取り、S3 バケット内のルート index.html を提供する機能です。そうすれば、JavaScript アプリケーションは URL を解析し、適切なページを提供できます。
リダイレクトを行う代わりに、すべての URL リクエストに対して index.html を提供するように S3 に指示する方法はありますか? これは、次の例のように、単一の index.html を提供することですべての受信リクエストを処理するように Apache を設定することに似ています。https://stackoverflow.com/a/10647521/1762614これらのルートを処理するためだけに Web サーバーを実行するのは避けたいです。すべてを S3 から実行できるのは非常に魅力的です。
ベストアンサー1
CloudFront の助けを借りれば、URL ハックなしでも簡単に解決できます。
- S3バケットを作成します。例: react
- 次の設定で CloudFront ディストリビューションを作成します。
- デフォルトのルートオブジェクト: index.html
- オリジンドメイン名: S3 バケットドメイン、例: react.s3.amazonaws.com
- [エラー ページ]タブに移動し、[カスタム エラー応答の作成]をクリックします。
- HTTP エラー コード: 403: 禁止 (S3 静的 Web サイトの場合は 404: 見つかりません)
- エラー応答をカスタマイズする: はい
- 応答ページパス: /index.html
- HTTP 応答コード: 200: OK
- 作成をクリック