我正在将 Wordpress 网站迁移到 Amazon s3 存储桶中托管的静态网站。所有页面都在目录结构中(例如blog/index.html),但可以通过/blog/访问。
默认情况下,Amazon 通过 302 重定向重定向缺少尾部斜杠的网址 (www.site.com/page -- 302 --> www.site.com/page/)。这对于 SEO 来说非常糟糕,我正在尝试将这些重定向设置为 301。
我尝试在根目录中添加 page.html 对象,并按照 Amazon 的说明设置到/page/的重定向。这只会为/page.html 创建 301。/page 仍然会导致 302。
亚马逊的重定向说明: http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
有关问题的相关博客文章: http://moz.com/community/q/new-static-site-with-302s
有没有人遇到过这种情况,或者有什么想法我可以做什么?
最佳答案
您现在可以使用 CloudFront 和 Lambda@Edge 修复此问题。您可以使用“原始响应”事件拦截从 S3 返回的请求,然后将响应状态代码更改为 301。
以下是您需要添加到 Lambda 处理程序的代码。
exports.handler = async (event) => {
const response = event.Records[0].cf.response;
if (response.status === '302') {
response.status = '301';
response.statusDescription = 'Moved Permanently'
}
return response;
};
这是一篇我写的博客文章,详细解释了如何执行此操作
https://www.vividbytes.io/fixing-redirect-codes-on-static-s3-websites/
关于redirect - 当 url 没有尾部斜杠时,AWS s3 强制 302 重定向 - 需要 301s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090254/