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 重定向到路径的主要内容,如果未能解决你的问题,请参考以下文章
javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)
通过 AWS Lambda 和 CloudFront 重定向 URL
AWS CloudFront 如何遵循 S3 存储桶重定向规则?