es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Redirigir el dominio sin www a https://www en un entorno sin servidor de AWS.

Tengo una configuración con Route 53, CloudFront, API Gateway y Lambda. Necesito redirigir todas las solicitudes a https://www.

Intenté hacerlo cambiando el registro de domain.com como alias a www.domain.com en Route 53, pero parece que solo es enrutamiento silencioso y no redireccionamiento. También busqué en las configuraciones de CloudFront pero no encontré nada relacionado con esto.

¿Cómo puedo hacer eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para redirigir todas las solicitudes a https://www, puedes seguir los siguientes pasos:

    1. Ve a tu distribución de CloudFront y haz clic en la pestaña “Comportamientos”.
    2. Haz clic en el comportamiento que está asociado con tu API Gateway.
    3. En la sección “Caché basada en encabezados de solicitud seleccionados”, añade “Host” a los encabezados permitidos.
    4. En la sección “Asociaciones con funciones Lambda”, añade un nuevo evento “Solicitud del espectador” en el cual seleccionarás una función Lambda que modificará la solicitud para redirigirla a https://www.
    5. Crea una nueva función Lambda para realizar la redirección con el siguiente código:
    'use strict';
    exports.handler = (evento, contexto, devolución) => {
    
        const solicitud = evento.Records[0].cf.request;
        const encabezados = solicitud.headers;
    
        if (encabezados.host[0].value.indexOf('www.') !== 0) {
            const urlRedireccion = ['https://www.', encabezados.host[0].value, solicitud.uri, solicitud.querystring ? '?' + solicitud.querystring : ''].join('');
    
            const respuesta = {
                status: '301',
                statusDescription: 'Movido Permanentemente',
                headers: {
                    location: [{
                        key: 'Location',
                        value: urlRedireccion,
                    }]
                },
            };
    
            devolución(null, respuesta);
        }
        else {
            devolución(null, solicitud);
        }
    };
    
    1. Despliega tu función Lambda y pruébala accediendo a tu API Gateway utilizando http://dominio.com. Debería redirigir a https://www.dominio.com.

    Nota: Puede que lleve algún tiempo para que los cambios se propaguen a través de la distribución de CloudFront. Además, es posible que necesites borrar la caché en CloudFront si no puedes ver los cambios inmediatamente.

Comments are closed.