2

我通过 Cloudfront 有一个静态站点,通过 Route 53 有一个 S3 源和自定义域。一切正常,除了 Google 还索引了 Cloudfront 分发 url (d123etc.cloudfront.net) 以及我的自定义域,导致重复的内容问题。

我已经尝试过规范的 url,但分布仍然被索引。建议根据使用的域提供不同的 robots.txt,这听起来不错,但没有 .htaccess 或 Web 服务器,将其留给 Lambda Edge 函数尝试发送不同的 robots.txt .

问题是我无法在函数中找到如何确定请求是来自我的自定义域还是来自直接分发 url。我已尝试将 Origin 列入白名单,但在使用 S3 源时未发送。我也尝试将Referer标头列入白名单,但在访问robots.txt文件时没有发送referrer,因为它是直接请求。

暂时,我在页面加载时使用 js 添加一个 meta noindex 客户端(我意识到为时已晚),并将客户端重定向到我的实际域,以防有人关注谷歌索引的 cloudfront.net领域。

有谁知道如何在 Lambda Edge 中检测用于发出请求的域?或者阻止谷歌索引 Cloudfront url 的其他方式,只是让它索引自定义域。

4

1 回答 1

0

所以我认为这样做的方法是在您的托管网络服务器上设置重定向。如果您检查请求标头中的“主机”并检查 cloudfront.com,请发送 301 响应代码以及您的自定义域名。

S3 有一种 UI 方式来执行此操作:

https://medium.com/tensult/how-to-do-site-redirection-using-aws-522a4002c645

看来您需要在同一个云端 URL 后面但没有自定义域的第二个存储桶。然后您可以将其设置为将所有请求重定向到您的自定义域。

然后,浏览器或机器人将停止尝试 cloudfront.com,因为它不返回任何内容,它们会自动(没有用户真正注意到)到我的 domain.xyz 并且所有链接都将链接到您自己的域。

于 2020-02-08T04:12:55.210 回答