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

标签 redirect amazon-web-services amazon-s3 http-headers http-redirect

我正在将 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/

相关文章:

amazon-web-services - 扩展存储 URL 的过期时间

amazon-s3 - 上传公共(public)文件 AWS S3

Javascript/Ajax 重定向问题

javascript - jQuery/JS 不会在验证表单后重定向

c# - 如何重定向我的 mvc asp.net web 应用程序中除一个角色之外的所有页面?

php - S3 在上传时设置 MIME 类型

java - 最佳实践 : Creation of SAX parser for XMLReader

java - 点击提交后重定向

php - 处理后从 SQS 队列中删除消息

python - 从 boto3 访问 DynamoDB Local