Cloudfront Custom Origin导致重复的内容问题

Joe*_*xer 12 cname duplicates amazon-cloudfront

我使用CloudFront的服务于图片,CSS和JS文件使用与子域CNAMEd习俗起源选项在我的帐我的网站.它工作得很好.

主要网站: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.mainsite.htm/images/image1.jpg获取图像

一切正常.

问题是谷歌警报已报告在以下两个位置找到该页面:

该页面只能从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?
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

小智 30

[我知道这个帖子已经过时了,但我正在为像我这样几个月后才看到它的人回答.]

从我所阅读和看到的内容来看,CloudFront并未在请求中始终如一地标识自己.但是,您可以通过覆盖CloudFront分发版中的robots.txt来解决此问题.

1)创建一个仅包含一个文件的新S3存储桶:robots.txt.这将是您的CloudFront域的robots.txt.

2)转到AWS控制台中的分发设置,然后单击"创建原点".添加桶.

3)转到"行为"并单击"创建行为:路径模式:robots.txt"原点:(您的新存储桶)

4)将robots.txt行为设置为更高的优先级(更低的数字).

5)转到失效并使/robots.txt无效.

现在abc123.cloudfront.net/robots.txt将从存储桶中提供,其他所有内容都将从您的域中提供.您可以选择允许/禁止在任一级别单独进行爬网.

另一个域/子域也可以代替一个桶,但为什么要麻烦.


小智 2

您需要添加一个robots.txt文件并告诉爬虫不要索引static1.mainsite.com下的内容。

在 CloudFront 中,您可以控制 CloudFront 访问您的服务器的主机名。我建议使用与常规网站主机名不同的特定主机名提供给 CloudFront。这样你就可以检测到对该主机名的请求并提供一个不允许任何内容的 robots.txt(与常规网站 robots.txt 不同)