首页 > 解决方案 > 如何重定向内部 URL 以使用 s3 网站以斜杠结尾

问题描述

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

更新:所以我的确切要求是谷歌将把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-集成/(带有斜杠)。如何使用 Cloudfront 实现这一目标。如果您需要任何其他信息,请告诉我。

标签: amazon-web-servicesamazon-s3redirectamazon-cloudfront

解决方案


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

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

更新(在 OP 澄清后):

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

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

最好的,斯特凡


推荐阅读