2012-01-06 21 views
10

CloudFrontを使用して、自分のアカウントにサブドメインCNAMEdを持つカスタムオリジンオプションを使用して、自分のウェブサイトの画像、CSSおよびjsファイルを配信しています。それはかなりうまくいく。クラウドフロントカスタムオリジンがコンテンツの重複問題を引き起こしています

メインサイト:www.mainsite.com

  1. static1.mainsite.com
  2. static2.mainsite.com

サンプル・ページ:www.mainsite.com/summary/page1。 HTM

このページでは、場合static1.mainsite.com/images/image1.jpg

から画像を呼び出し、 Cloudfrontはまだ画像をキャッシュしていないので、www.mainite.htm/images/image1.jpgから画像を取得します。

これはすべて正常です。

問題は、Googleアラートが両方で発見されているように、ページを報告したことがある:

ページは、WWWからアクセスできる必要があります。サイト。 CNAMEドメインからページにアクセスできないようにする必要があります。

私は、.htaccessファイルにmodリライトを入れようとしましたが、メインスクリプトファイルにexit()も入れようとしました。

しかし、Cloudfrontはキャッシュ内のファイルのstatic1バージョンを見つけられないと、メインサイトからファイルを呼び出してキャッシュします。

質問は、以下のとおりです。あなたの助けを

1. What am I missing here? 
2. How do I prevent my site from serving pages instead of just static components to cloudfront? 
3. How do I delete the pages from cloudfront? just let them expire? 

感謝。

ジョー

答えて

0

あなたはrobots.txtファイルを追加していないstatic1.mainsite.com下のインデックスコンテンツにクローラを伝える必要があります。

CloudFrontでは、CloudFrontがサーバーにアクセスするホスト名を制御できます。特定のホスト名を使用して、通常のウェブサイトのホスト名とは異なるCloudFrontに与えることをお勧めします。そうすれば、そのホスト名へのリクエストを検出し、すべてを許可しないrobots.txtを提供することができます(通常のウェブサイトrobots.txtとは異なります)

25

[このスレッドは古いですが、私のような人のために誰がそれを数ヶ月後に参照してください]

私が読んだことから、CloudFrontは要求で一貫してそれを識別しません。しかし、CloudFrontディストリビューションのrobots.txtをオーバーライドすることで、この問題を回避することができます。

1)robots.txtという1つのファイルのみを含む新しいS3バケットを作成します。これはCloudFrontドメインのrobots.txtになります。

2)AWS Consoleで配信設定に移動し、原点の作成]をクリックします。バケットを追加します。

3)行動に移動して、行動の作成]をクリックします: パスパターン:robots.txtの 原産地:(あなたの新しいバケット)

4)高い優先順位(小さい番号)でrobots.txtの動作を設定します。

5)は無効化に移動して、/robots.txtを無効にします。

は今abc123.cloudfront.net/robots.txtバケツから提供され、他のすべては、あなたのドメインから提供されます。あなたは/許可独立していずれかのレベルでクロールを許可しないように選択することができます。

別のドメイン/サブドメインはまた、バケットの代わりに動作しますが、なぜわざわざます。