13

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

主站点: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?

谢谢你的帮助。

4

2 回答 2

32

[我知道这个帖子很旧,但我会为像我这样几个月后看到它的人回答它。]

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

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

于 2013-05-16T05:10:01.223 回答
2

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

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

于 2012-02-01T19:36:21.210 回答