在 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的主要内容,如果未能解决你的问题,请参考以下文章

AWS国际版的Route 53和CloudFront

如何开通 CloudFront 和 Route 53

使用 Cloudfront、EB 和 Route 53 时,源域名应该设置啥?

尝试实现 socket.io 通信时收到 GET 400。 Node.js、ELB、Route 53、CloudFront 和 s3

将 CloudFront 分配与 Route 53 域相关联时出现问题

如何开通 CloudFront 和 Route 53