在 Route53 和 CloudFront 中将 www 重定向到非 www

Redirect www to non www in Route53 and CloudFront

我正在使用以 S3 作为源的 CloudFront(存储桶不是 public,未启用静态网站)。存储桶有一些随机名称。

我已经为 example.com 创建了一个 ACM 和 R53 入口 + 为此域配置了 CloudFront,它在 https://example.com.

上运行良好

现在我想将 https://www.example.com 重定向到 https://example.com。 我将 www.example.com as domain to CloudFront (not sure if it's needed) and I created a new R53 entree (CNAME) from www.example.com 添加到 example.com。

现在 domain.com 和 www.example.com work but this is not what I want. I want www.example.com 都重定向到 example.com。我该如何解决?

您需要两个不同的 CloudFront 分配。

  1. example.com -> s3 来源
  2. www.example.com -> s3 重定向存储桶(网站)到 example.com

您可以使用 CloudFront 函数根据主机进行重定向 header。您可以在 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;
}