在没有S3的AWS路由53中将根域重定向到www

时间:2020-07-24 11:13:48

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

我想将我的根域重定向到www.domain.com。该网站是使用s3 CloudFront和route53发布的。

我已经看了很多关于如何使用s3进行重定向的文档,但是我无法做到这一点,因为已经有一个存储桶,其根域位于某处。因此,我无法使用我的根域作为名称来创建存储桶。另外,我怀疑此s3重定向是否适用于https请求。

在不使用s3存储桶的情况下,我还没有看到任何有关重定向的博客。

所以我如何将HTTP / https根域重定向到aws中的www子域。

1 个答案:

答案 0 :(得分:2)

您不能使用Route 53进行重定向(毕竟这是DNS配置服务,而重定向是HTTP操作)。

如果您不能使用S3,另一种解决方案可能是将CloudFront与Lambda@Edge函数一起使用。

如果主机名不是www域,则可以对www域执行redirect

该功能可能类似于以下内容

def lambda_handler(event, context):
 
    request = event["Records"][0]["cf"]["request"]
    response = event["Records"][0]["cf"]["response"]
    # Generate HTTP redirect response with 302 status code and Location header.
    
    if request['headers']['host'][0]['value'] != 'www.example.com':
     
        response = {
            'status': '302',
            'statusDescription': 'Found',
            'headers': {
                'location': [{
                    'key': 'Location',
                    'value': 'https://www.example.com/{}' .format(request['uri'])
                }]
            }
        }
     
    return response