Redirect 当url没有尾随斜杠时,AWS s3强制302重定向-需要301s

Redirect 当url没有尾随斜杠时,AWS s3强制302重定向-需要301s,redirect,amazon-web-services,amazon-s3,http-headers,http-redirect,Redirect,Amazon Web Services,Amazon S3,Http Headers,Http Redirect,我正在将Wordpress站点迁移到托管在AmazonS3存储桶中的静态站点。所有页面都位于目录结构中(例如blog/index.html),但可以通过/blog/访问 默认情况下,Amazon通过302重定向(www.site.com/page--302-->www.site.com/page/)重定向缺少尾部斜杠的URL。这对搜索引擎优化来说太糟糕了,我正在尝试将这些重定向设置为301s 我已经尝试在根目录中添加page.html对象,并按照Amazon的说明设置重定向到/page/。这只会

我正在将Wordpress站点迁移到托管在AmazonS3存储桶中的静态站点。所有页面都位于目录结构中(例如blog/index.html),但可以通过/blog/访问

默认情况下,Amazon通过302重定向(www.site.com/page--302-->www.site.com/page/)重定向缺少尾部斜杠的URL。这对搜索引擎优化来说太糟糕了,我正在尝试将这些重定向设置为301s

我已经尝试在根目录中添加page.html对象,并按照Amazon的说明设置重定向到/page/。这只会为/page.html创建301s/页面仍然会导致302

亚马逊的重定向说明:

有关此问题的相关博客文章:

有没有人遇到过这种情况,或者有什么想法我可以做什么?

根据,他们的设计的确是返回302:

。。。如果从前面的URL中排除尾随斜杠,AmazonS3将首先在bucket中查找对象
photos
。如果未找到
photos
对象,则它将搜索索引文档
photos/index.html
。如果找到该文档,Amazon S3将返回一条
302 found
消息,并指向
photos/
键。对于后续的
photos/
,AmazonS3将返回
photos/index.html


按照他们文档中的文字,尝试将
page.html
对象重命名为
page
(不带.html扩展名)。对于每个包含尾随斜杠的URL,您都必须这样做,这很糟糕,但在Amazon允许我们为此行为配置实际重定向代码之前,我们一直坚持这样做。

您现在可以使用CloudFront和Lambda@Edge.您可以使用“origin response”事件截获从S3返回的请求,然后更改t他把状态代码回复到301

下面是需要添加到Lambda处理程序的代码

exports.handler=async(事件)=>{
const response=event.Records[0].cf.response;
如果(response.status==“302”){
response.status='301';
response.statusDescription='永久移动'
}
返回响应;
};
这是我写的一篇博文,详细解释了如何做到这一点