在 Route53 和 CloudFront 中将 www 重定向到非 www
Posted
技术标签:
【中文标题】在 Route53 和 CloudFront 中将 www 重定向到非 www【英文标题】:Redirect www to non www in Route53 and CloudFront 【发布时间】:2021-11-27 00:28:33 【问题描述】:我正在使用 CloudFront,并将 S3 作为源(存储桶不是公共的,未启用静态网站)。存储桶有一些随机名称。
我为 example.com 创建了一个 ACM 和 R53 主目录 + 为该域配置了 CloudFront,它适用于 https://example.com。
现在我想将https://www.example.com 重定向到https://example.com。 我将 www.example.com 作为域添加到 CloudFront(不确定是否需要),并从 www.example.com 到 example.com 创建了一个新的 R53 主条目(CNAME)。
现在 domain.com 和 www.example.com 都可以工作,但这不是我想要的。我希望 www.example.com 重定向到 example.com。我该如何解决?
【问题讨论】:
【参考方案1】:您可以使用 CloudFront 函数根据主机标头进行重定向。您可以在 CloudFront 控制台的 Functions 部分创建函数 - 这是一个示例:
function handler(event)
var request = event.request;
var host = request.headers.host.value;
if (host === 'www.example.com')
var response =
statusCode: 301,
statusDescription: 'Moved Permanently',
headers:
'location': "value": `https://example.com$request.uri`
;
return response;
return request;
【讨论】:
【参考方案2】:您需要两个不同的 CloudFront 分配。
example.com
-> s3 来源
www.example.com
-> s3 将存储桶(网站)重定向到 example.com
【讨论】:
以上是关于在 Route53 和 CloudFront 中将 www 重定向到非 www的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cloudfront、EB 和 Route 53 时,源域名应该设置啥?
尝试实现 socket.io 通信时收到 GET 400。 Node.js、ELB、Route 53、CloudFront 和 s3