CloudFront установлены редирект www на домен с SSL [закрыт]
Простите меня, если об этом спрашивали раньше, есть ряд ресурсов, которые касаются этого, но, похоже, ничто не подходит для моего конкретного (https) варианта использования.
Я пытаюсь перенаправить https://www.example.com к https://example.com . аналогично, это должно работать для http://www.example.com к https://example.com .
Я настроил дистрибутив cloudfront с источником корзины s3, перенаправил http на https, добавил cname example.com и добавил мой доменный сертификат (который работает как для поддомена www, так и для голого домена).
Я также настроил отдельный дистрибутив с cname для www.example.com, добавил сертификат и установил источник в отдельную корзину s3, которая в (статическом хостинге сайта) перенаправляет все запросы на https://example.com .
Перенаправление работает, как и ожидалось для http://example.com к https://example.com , однако http(s)://www.example.com чтобы https://example.com нет.
В route 53 у меня есть корневой домен с псевдонимами для первого дистрибутива cloudfront и www с псевдонимами для второго.
2 ответа:
Разместить сайт на AWS так, чтобы:
Https://www.example.com, http://www.example.com и еще http://example.com все перенаправить на https://example.com
Вам нужно:
Создайте два ведра S3 с именем: example.com и www.example.com.
Включитестатический хостинг веб-сайтов на этих двух корзинах.
Настроить перенаправление в корзине www.example.com к: https://example.com . В свойствах корзины выберите статический хостинг сайта => перенаправление всех запросов на другое имя хоста . В полеTarget bucket или domain введите example.com , в поле Protocol введите https
Для этих корзин создайте два распределения CloudFront. Каждое из этих распределений указывает на соответствующее ведро:
Для исходного доменного имени предоставить URL-адреса корзины приведены в разделестатический хостинг веб-сайтов . URL-адреса должны иметь вид (или аналогичный): example.com.s3-website-us-west-1.amazonaws.com
На обоих дистрибутивах HTTP к HTTPS редирект.
НЕ ИСПОЛЬЗУЙТЕ URL, ПРЕДЛОЖЕННЫЙ AMAZON AUTOCOMPLETE!
Не устанавливайте свойствокорневого объекта по умолчанию !
Настройка DNS путем установки записей для www.example.com и еще example.com чтобы указать на соответствующие дистрибутивы CloudFront.
Почему это работает? CloudFront обеспечивает перенаправление с HTTP на HTTPS в обоих случаях (с www и без него). Ведро для www.example.com обеспечивает перенаправление на example.com если бы у вас не было этого дистрибутива, ведро не смогло бы перенаправить запрос на https://www.example.com. S3 сам по себе не поддерживает HTTPS для статического хостинга веб-сайтов.
Я нашел решение благодаря этому ответу: Amazon S3 Redirect и Cloudfront
Короче говоря:
Cloudfront не соблюдает правила перенаправления, установленные в S3, если источником является только идентификатор корзины. Вместо этого я должен был установить источник на предоставленное S3 статическое имя хоста веб-сайта.