比較的簡単なことをしようとしています。いくつかのドメインとサブドメインをセットアップして、サイトのコアドメインにリダイレクトしたいのですが、リダイレクトをCloudfrontに配置したいと思います。ルートパスのリダイレクト以外はすべて機能します。これにより、S3バケットを部分的に説明するXMLファイルが取得されます。
バックグラウンド
S3
S3では、次のような全リダイレクトバケットを設定できます。
これをテストすると、Webエンドポイント(brass9-com.s3-website-us-west-1.amazonaws.com)は、本来あるべきことを実行します-brass9.comにリダイレクトします。良い。
クラウドフロント
CloudfrontではS3バケットを指すことができますが、そうするように提案されている方法は間違っています。bras9-com.s3.amazonaws.comのように、バケットをその名前で指すのではなく、上記のWebエンドポイントを使用する必要があります。それ以外は、すべてをデフォルトのままにして、良好なリダイレクト動作を得ることができます。したがって、www.brass9.com / portfolioのようなパスは、適切な場所に正しくリダイレクトされます。また良い。
問題-ルートドメインのリダイレクト
その後、機能しないのは、単純なwww.brass9.comからリダイレクトすることです。リダイレクトを取得する代わりに、次の奇妙な結果を取得します。
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
OK... 。したがって、これは完全に予期されることではありません。デフォルトルートオブジェクトがないためです。しかし、この動作を防ぐために、どのデフォルトルートオブジェクトを指定できるでしょうか。指し示す必要があるS3リダイレクトオブジェクトがある場合、その名前は何ですか?または、他に適切な構成がありますか、これは、Amazonが修正する必要があるCloudfrontとS3の相互作用のバグにすぎませんか?
機能しない既知のソリューション:デフォルトのルートオブジェクト
index.htmlのデフォルトルートオブジェクトを指定することは可能ですが、それは何の助けにもなりません-問題を変更するだけです。代わりに、CloudfrontのURLは、404であるメインサイトの/index.htmlにリダイレクトします(index.htmlファイルは使用せず、サーバー側のフレームワーク駆動型サイトです)。index.htmlをサーバーに配置することもできますが、そもそもCloudfrontを使用することによるわずかな速度の向上に勝るものはありません。
同様の質問
1つの質問が似たような質問をしますが、なんらかの理由で、XML応答ではなく、何らかの理由で空白の0バイトの応答が返されます。その問題や解決策に関する質問は含まれていません。
関連記事
ある記事では、ベアドメインとwwwドメインの両方でサイト全体を提供することを提案しています。これは、ユーザーのブックマーク、検索ランキングなどに影響します。これを行うべきではありません。
リダイレクト方式ではなく、S3とCloudfrontで静的Webサイトをホストすることについて議論しているものもあり、関係はありません。
それで、これを適切に行うにはどうすればよいですか?
Cloudfront構成のスクリーンショット-デフォルトルートオブジェクトがなく、S3の起点を指しています。InProgressを無視-テストのためにデフォルトルートオブジェクトのオンとオフを切り替えました。
そしてそのディストリビューションのOrigin設定:
GET /
、Webエンドポイントを使用するように構成を修正する前から、Cloudfrontからキャッシュされた応答が表示されていた可能性があるようにも思えます。