【问题标题】:How to redirect internal URLs to end with trailing slashes with s3 websites如何重定向内部 URL 以使用 s3 网站以斜杠结尾
【发布时间】:2021-08-30 05:20:25
【问题描述】:

我有一个托管在 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-integrations/(带有尾部斜杠)。 如何使用 Cloudfront 实现这一目标。 如果您需要任何其他信息,请告诉我。

【问题讨论】:

    标签: amazon-web-services amazon-s3 redirect amazon-cloudfront


    【解决方案1】:

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

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

    更新(在 OP 澄清后):

    我不确定这对 SEO 有多大帮助,但您可以使用 CloudFront 函数在 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;
        }
    
    

    最好, 斯蒂芬

    【讨论】:

    • 用更多信息更新了问题。如果您需要更多信息,请告诉我。
    • @HarryKris 我已经更新了答案。请立即检查。
    • 谢谢。我对 AWS ECS 容器也有类似的问题。该网站托管在 EC2 侧的 docker 容器内。有没有办法为这个设置重定向?
    • @HarryKris 当然可以。但是您应该为此创建一个单独的问题。
    • 是的,对于云端它的工作,但您也可以帮助 ECS 托管的 docker 容器。里面没有.htaccess。那么我们如何处理重定向(带有斜杠)。
    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多