如何在 AWS S3 网站 CloudFront 中设置别名重定向?

Posted

技术标签:

【中文标题】如何在 AWS S3 网站 CloudFront 中设置别名重定向?【英文标题】:how can I set Alias Redirection in AWS S3 website CloudFront? 【发布时间】:2021-12-16 01:08:03 【问题描述】:

我有一个在 apex 域 (xxx.com) 工作的主要网站,现在有一个短期项目,它只是一个登录页面,使用 Gatsby4(React) 作为 S3 存储桶中的所有静态文件部署,并设置适当的 Cloudfront https工作的分发

现在有https://landingpage.xxx.com 可以工作了,但是又长又难记,还想设置一个短别名,

当用户在地址栏中输入lp.xxx.com时,它应该做HTTP 301重定向到目的地https://landingpage.xxx.com;我已在 Route53 中将此 lp.xxx.com 设置为 CNAME landingpage.xxx.com 并将 lp.xxx.com 添加到 Cloudfront Altname,

所以现在https://lp.xxx.com 正在工作(以及https://landingpage.xxx.com),但它就像两个不同的入口一样工作,没有重定向,

想知道我在某处错过了一个简单的重定向规则设置吗?避免更改 Gatsby4(React) 代码;这需要一些 Lambda@Edge 函数吗?

【问题讨论】:

【参考方案1】:

我正在使用 CloudFront 函数重定向解决它:

修改自此示例代码https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-redirect-url.html

function handler(event) 
    var request = event.request;
    var headers = request.headers;
    var host = request.headers.host.value;

    if (host !== 'landingpage.xxx.com') 
        var response = 
            statusCode: 302,
            statusDescription: 'Found',
            headers:
                 "location":  "value": 'https://landingpage.xxx.com'  
            
        return response;
    
    return request;

【讨论】:

以上是关于如何在 AWS S3 网站 CloudFront 中设置别名重定向?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CloudFront 和目录重定向的 AWS S3 静态网站托管

具有 Route 53 域的 AWS S3 网站,需要通过 CloudFront 进行 https

我应该为 elb 和 aws S3 设置两个不同的 Cloudfront 发行版吗?

AWS CloudFront 重定向到 S3 存储桶

允许用户从 AWS s3 或 Cloudfront 批量下载文件

AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动静分离站点