2012-01-06 69 views
10

我正在使用CloudFront为我的网站提供图像,css和js文件,并使用自定义来源选项将子域CNAMEd添加到我的帐户。它工作得很好。Cloudfront自定义原因导致重复内容问题

主要网站: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域访问页面。

我试图把一个mod重写在.htaccess文件中,我也试图把一个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)创建一个新的S3存储桶,其中只包含一个文件:robots.txt。这将是您的CloudFront域的robots.txt。

2)转到AWS控制台中的分配设置,然后单击创建原点。添加存储桶。

3)进入行为,然后单击创建行为: 路径模式:robots.txt的 来源:(新桶)

4)以较高的优先级(下数设置robots.txt的行为)。

5)进入无效状态并使/robots.txt无效。

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

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

相关问题