S3 www to non-www重定向将/index.html附加到URL [英] S3 www to non-www redirect appends /index.html to the URL
本文介绍了S3 www to non-www重定向将/index.html附加到URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我的域是example.com
,我已经根据this博客文章使用两个S3存储桶和两个CloudFront发行版将www设置为非www重定向,并在www存储桶中设置指向example.com
的重定向。
这很好用,但它实际上会重定向到example.com/index.html
。是否可以将其重定向到example.com
?
推荐答案
您的发行版配置中是否有index.html
?我不知道为什么会看到附加了index.html的重定向,但更简单的方法是使用CloudFront函数(可在CloudFront控制台的函数部分中找到),这样做不需要两个存储桶,并且可以更好地控制重定向。下面是一个例子:
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;
}
您可以将其设置为查看器请求函数,并将其附加到缓存行为。使用此设置,您只需将Example.com和www.example.com都设置为备用域名的单个分发版本。
如果您需要将index.html
设置为根对象,也可以在主机不是www.example.com时在函数中通过修改request.uri
来完成-这样,如果您在发行版中有任何对index.html
的引用,您可以将其全部移到此函数。以下是一个示例函数,它演示了如何在将请求发送到S3之前重写URI(确保面向外部的URL保持不变):
https://github.com/aws-samples/amazon-cloudfront-functions/tree/main/url-rewrite-single-page-apps
这篇关于S3 www to non-www重定向将/index.html附加到URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文