S3 www to non-www重定向将/index.html附加到URL [英] S3 www to non-www redirect appends /index.html to the URL

查看:0
本文介绍了S3 www to non-www重定向将/index.html附加到URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我的域是example.com,我已经根据this博客文章使用两个S3存储桶和两个CloudFront发行版将www设置为非www重定向,并在www存储桶中设置指向example.com的重定向。

这很好用,但它实际上会重定向到example.com/index.html。是否可以将其重定向到example.com

推荐答案

您的发行版配置中是否有index.html?我不知道为什么会看到附加了index.html的重定向,但更简单的方法是使用CloudFront函数(可在CloudFront控制台的函数部分中找到),这样做不需要两个存储桶,并且可以更好地控制重定向。下面是一个例子:

    function handler(event) {
        var request = event.request;
        var host = request.headers.host.value;

        if (host === 'www.example.com') {    
            var response = {
                statusCode: 301,
                statusDescription: 'Moved Permanently',
                headers: { 
                    'location': { 'value': `https://example.com${request.uri}` } 
                }
            };

            return response;
        }

        return request;
    }
您可以将其设置为查看器请求函数,并将其附加到缓存行为。使用此设置,您只需将Example.com和www.example.com都设置为备用域名的单个分发版本。

如果您需要将index.html设置为根对象,也可以在主机不是www.example.com时在函数中通过修改request.uri来完成-这样,如果您在发行版中有任何对index.html的引用,您可以将其全部移到此函数。以下是一个示例函数,它演示了如何在将请求发送到S3之前重写URI(确保面向外部的URL保持不变): https://github.com/aws-samples/amazon-cloudfront-functions/tree/main/url-rewrite-single-page-apps

这篇关于S3 www to non-www重定向将/index.html附加到URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆