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

时间:2012-01-06 04:26:28

标签: duplicates amazon-cloudfront cname

我正在使用CloudFront为我的网站提供图像,css和js文件,使用自定义源选项以及子域名CNAMEd到我的帐户。它工作得很好。

主要网站:www.mainsite.com

  1. static1.mainsite.com
  2. static2.mainsite.com
  3. 示例页面: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?
    

    感谢您的帮助。

2 个答案:

答案 0 :(得分:28)

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

从我所阅读和看到的内容来看,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,其他所有内容都将从您的域中提供。您可以选择允许/禁止在任一级别单独进行爬网。

另一个域/子域也可以代替存储桶,但为什么会遇到麻烦。

答案 1 :(得分:1)

您需要添加robots.txt文件并告知抓取工具不要在static1.mainsite.com下为内容编制索引。

在CloudFront中,您可以控制CloudFront将访问您的服务器的主机名。我建议使用特定的主机名来提供给CloudFront,这与常规网站主机名不同。通过这种方式,您可以检测到对该主机名的请求,并提供不允许所有内容的robots.txt(与常规网站robots.txt不同)