AWS CloudFront 重定向到路径

Posted

技术标签:

【中文标题】AWS CloudFront 重定向到路径【英文标题】:AWS CloudFront redirect to path 【发布时间】:2020-06-21 20:38:55 【问题描述】:

我有一个 CloudFront 分配,它将 www.myapp.com 重定向到存储我的网站的 S3 存储桶。 该发行版使用 CName www.myapp.com 和默认根对象“index.html”。

我还想将 www.myapp.com/path 重定向到同一个存储桶,以便用户可以通过 www.myapp.com 和 www.myapp.com/path 访问我的网站。

有人知道如何使用 CloudFront 将自定义路径重定向到存储桶吗?

【问题讨论】:

【参考方案1】:
    这不是重定向,而是原始行为 您可以为原点设置不同的原点路径和行为的路径模式。行为是目标,起源是目的地

【讨论】:

好的,所以我的存储桶有一个名为 mywebsite 的文件夹和一个名为 index.html 的文件,我的存储桶名称和路径 /mywebsite 有一个单一来源。我需要应用哪个行为/默认根对象 我可以通过 www.website.com/path 访问我的网站 /path 作为行为的路径模式,/mywebsite 作为 Origin 的源路径,index.html 作为分发的默认根对象 我认为分发的默认根对象仅适用于您的分发的根,因此它只会转到 www.website.com 的 index.html 而不是 www.website.com/path 哦,你是对的。刚刚发现 AWS 对此的回应:aws.amazon.com/premiumsupport/knowledge-center/…【参考方案2】:

使用 /path/ 的行为和原始请求的 lambda 函数解决了这个问题:

exports.handler = async (event, context, callback) => 
    const response = 
        status: '301',
        statusDescription: 'Moved Permanently',
        headers: 
            location: [
                key: 'Location',
                value: "https://" + event.Records[0].cf.request.headers.host[0].value.replace(".s3.amazonaws.com", ""),
            ],
        ,
    ;

    callback(null, response);
;

【讨论】:

以上是关于AWS CloudFront 重定向到路径的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cloudfront重定向TOO_MANY次

javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)

通过 AWS Lambda 和 CloudFront 重定向 URL

AWS CloudFront 如何遵循 S3 存储桶重定向规则?

AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS

AWS CloudFront 响应 307 临时重定向