假设我的域名是example.com
,我已经设置了www到非www重定向使用两个S3桶,两个CloudFront发行版根据这篇博客文章,并在www桶中设置了指向example.com
的重定向。
这工作得很好,但它实际上重定向到example.com/index.html
。是否有可能将其重定向到example.com
?
您的发行版配置中是否有index.html
?我不能说为什么您会看到添加了index.html的重定向,但是一种更简单的方法—不需要两个桶,并且对重定向有更多的控制—是使用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;
}
您可以将其设置为查看器请求函数,并将其附加到缓存行为。使用此设置,您只需要将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
检查你的www发行版没有"默认根对象"index.html
的值。把它变成空白对我来说修复了同样的问题。