如何使用 s3 网站重定向内部 URL 以尾部斜杠结尾

How to redirect internal URLs to end with trailing slashes with s3 websites

我有一个网站托管在 s3 中,带有用于缓存的云端。我想将我的内部页面重定向到末尾带有尾部斜杠的页面,当前情况是两个版本(有和没有尾部斜杠)都在工作,应该只使用尾部斜杠,例如:https://us.springverify.com/api-integrations/ 与所有内部页面。 该域位于 Route53 中。 因为它在 S3 中,我将无法为此使用 .htaccess 文件重定向。 有什么办法可以从云端或 S3 进行重定向(AWS 说他们不能从 Route53 端进行重定向)。 任何帮助将不胜感激

更新:所以我的确切要求是与 SEO 相关的东西 google 将处理 https://us.springverify.com/api-integrations(没有斜线)和 https://us.springverify.com/api-integrations/ 作为不同的网站。它也发生在其他内部页面上。所以我想要的是,即使输入 URL 或指向 https://us.springverify.com/api-integrations (没有尾部斜杠) URL 应该重定向到 https://us.springverify.com/api-integrations/(带尾部斜杠)。 我如何使用 Cloudfront 实现此目的。 如果您需要任何其他信息,请告诉我。

这是 S3 和 Route53 无法实现的。 S3 是 'just' 一个数据库,您可以在其中通过键访问对象。例如,在您的静态网站示例中,每个页面都是一个 S3 对象,它有一个对象键,例如S3://my-bucket/pages/my-page

您可以使用 CloudFront Functions 或 Lambda@Edge 实现类似的目标。如果您提供有关您想要实现的目标的更多信息,我可能会进一步帮助您。

更新(OP 澄清后):

我不确定这对 SEO 有多大帮助,但您可以使用 CloudFront Functions 为 CF 分发收到的每个请求添加尾部斜杠。为此,您应该:

  1. 创建事件类型为 CF 的函数:查看器请求。请参阅 AWS 文档 here 了解如何执行此操作。
  2. 添加所需的 URL 重写(例如附加“/”)业务逻辑。请参阅下面的示例如何执行此操作。
     function handler(event) {
        var request = event.request;
        var uri = request.uri;
        
        if (!uri.endsWith('/')) {
            request.uri += '/';
        } 
       
        return request;
    }

最好的, 斯特凡