Amazon S3でホストされているウェブサイトがあります。 WordPressでホストされている古いウェブサイトの新しいバージョンです。
メタデータWebsite Redirect Location
を使用していくつかのファイルを設定し、古い場所を処理して、新しいWebサイトページにリダイレクトしました。
たとえば、http://www.mysite.com/solution
にリダイレクトしたいhttp://mysite.s3-website-us-east-1.amazonaws.com/product.html
があったため、バケット内にsolution
という名前の空のファイルを作成し、正しいメタデータを使用しました。
Website Redirect Location
= /product.html
S3リダイレクトメタデータは、SEOに最適な301 Moved Permanently
と同等です。これは、S3ドメインから直接URLにアクセスするときにうまく機能します。
また、ウェブサイトバケットに基づいてCloudFrontディストリビューションをセットアップしました。そして、私のディストリビューションを介してアクセスしようとすると、リダイレクトが機能しません。
http://xxxx123.cloudfront.net/solution
はリダイレクトせず、代わりに空のファイルをダウンロードします。
だから私の質問は、CloudFrontディストリビューションを通じてリダイレクトを維持する方法ですか?または、SEOを悪化させることなくリダイレクトを処理する方法についてのアイデアはありますか?
ありがとう
最近この問題に遭遇し、うまくいくように見える回避策を見つけました。
バケットのホスト名ではなく、S3静的ウェブサイトのホスト名を指すカスタムOriginを使用してCloudfrontディストリビューションを作成しました。 OPの場合、望ましいOriginは次のようになります。
mysite.s3-website-us-east-1.amazonaws.com
バケットをオリジンとして使用するだけでCloudfrontディストリビューションにアクセスしても、バケットは実際にはリダイレクトを提供しないため、機能しません。ファイルの提供とメタデータの保存のみを行います。
お役に立てば幸いです。
文書化された リクエストとレスポンスの動作、およびカスタムオリジンでサポートされているHTTPステータスコード によると、 Amazon CloudFront が従いません リダイレクト 、残念ながら:
[...]リダイレクトを構成した後、エンドユーザーがオブジェクトのリクエストを初めて送信すると、CloudFront FrontがリクエストをOriginに送信し、Originはリダイレクトで応答します(たとえば、302 Moved Temporarily)。 CloudFrontはリダイレクトをキャッシュし、エンドユーザーに返します。 CloudFrontがリダイレクトを追跡しません。[強調鉱山]
もちろん、カスタムOriginではなく Amazon S を使用しており、関連セクションが Amazon S3 Originsのリクエストおよびレスポンス動作 に特にないが、Amazon S3リダイレクトが指定されているごく最近追加されたばかりです( Amazon S3-ウェブサイトリダイレクトのサポート を参照)、まだそこにない場合があります。
したがって、HTTPステータスコード200 OKの空のファイルを受信せず、HTTPステータス301が永久に移動した本体なし-実際にこれをブラウザで確認したか、最終的にはコマンドラインツールだけで確認したか。 cURL または HTTPie ?後者のツールは通常、リダイレクトを追跡するために明示的なパラメーターを必要とするため、簡単に気付かない可能性があります。
分析が正しいことが判明した場合は、代わりにCloudFrontを明示的にターゲットにするようにリダイレクトを構成する必要があります。再び Redirects を参照してください。
次のいずれかの場所にリクエストをリダイレクトするようにWebサーバーを構成できます。
オリジンサーバー上のオブジェクトの新しいURL。エンドユーザーが新しいURLへのリダイレクトに従うと、エンドユーザーはCloudFrontをバイパスして、直接Originに移動します。そのため、Origin上のオブジェクトの新しいURLにリクエストをリダイレクトしないことをお勧めします。
オブジェクトの新しいCloudFront URL。エンドユーザーが新しいCloudFront URLを含むリクエストを送信すると、CloudFrontはOriginの新しい場所からオブジェクトを取得し、それをEdgeの場所にキャッシュして、オブジェクトをエンドユーザーに返します。オブジェクトに対する後続のリクエストは、エッジロケーションによって処理されます。これにより、Originからオブジェクトをリクエストするビューアに関連する待ち時間と負荷が回避されます。ただし、オブジェクトの新しいリクエストごとに、CloudFrontへの2つのリクエストに対して料金が発生します。