Статический хостинг Amazon S3 с Namecheap DNS - Как правильно маршрутизировать URL-адрес, не связанный с WWW-префиксом

Я читал другие сообщения, чтобы попытаться разобраться в этом вопросе... но мне нужно уточнение.

Я могу получить все мои запросы на домен, чтобы поразить мой ковш Amazon S3 при входе на сайт www.FOO.com/MyDirectory

Если я войду в FOO.com/MyDirectory без www, он не сработает.

Каков правильный метод для того, чтобы запросы URL-адресов без www-маршрута были правильно использованы в одном ведро Amazon S3?

Любые советы очень помогут. Благодаря

Ответ 1

Наконец я пришел к следующему решению:

Я использую Namecheap для DNS и Amazon S3 с включенным статическим хостингом...

Решение позволяет как получить доступ к корневому домену, так и к домену www. В передовой конфигурации dns namecheap у меня есть следующие настройки:

CNAME Record    @    domain.com.s3-website-us-west-1.amazonaws.com.
CNAME Record   www   www.domain.com.s3-website-us-west-1.amazonaws.com.

В конфигурации Amazon S3 у меня есть два отдельных ковши.

[S3 Bucket #1] 
Bucket name: www.domain.com
Static website hosting set to:
"Enable website hosting"

[S3 Bucket #2]
Bucket name: domain.com
Static website hosting set to: 
"Redirect all requests to another host name" pointing to www.domain.com (Bucket #1)

В этой конфигурации любой из моих веб-трафика, поступающий в корневой домен, может попасть в контейнер контейнера Amazon S3 "domain.com", а затем автоматически перенаправить через Amazon в первичный ведро S3 "www.domain.com", который обслуживает все моего статического контента.

Если кто-то попытается напрямую подключиться к домену www, он перейдет непосредственно в контейнер Amazon S3 "www.domain.com" и не нуждается в перенаправлении через ведро "domain.com".

Надеюсь, это поможет любому, кто сталкивается с проблемами, правильно настроив трафик вашего корневого домена.

Ответ 2

Поэтому я использовал jremi answer, но, как упоминалось ниже, были проблемы с доставкой электронной почты. Через некоторое время с поддержкой NameCheap у меня есть рабочее решение.

Настройка NameCheap

CNAME Record          www   domain.com.s3-website-us-west-1.amazonaws.com.
URL Redirect Record   @     www.domain.com  (unmasked)

Настройка S3 (нужно только 1 ведро)

[S3 Bucket] 
Bucket name: www.domain.com     <---- This must match your domain exactly
Static website hosting set to:
"Enable website hosting"

Политика S3 Bucket

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.domain.com/*"
        }
    ]
}

Это позволило работать и domain.com, и www.domain.com, и моя электронная почта NameCheap также работает.

Ответ 3

Я использовал метод sirclesam, описанный выше, и он получил мне 95% пути, но мой сайт по-прежнему не загружался, пока я не перешел и не изменил некоторые конфигурации в моей консоли AWS S3.

Вот шаги, которые нужно предпринять:

  1. перейти к панели инструментов S3
  2. нажмите на корзину, которую вы хотите использовать (www.domain.com)
  3. нажмите на вкладку панели разрешений
  4. должно появиться окно с двумя столбцами и кнопкой "Изменить" в правом верхнем углу окна - нажмите эту кнопку редактирования
  5. Всего должно быть 4 флажка - ОТКЛЮЧИТЕ нижний ДВА
  6. сохраните и попробуйте получить доступ к своему сайту

Это сработало для меня. Сначала я следовал руководству, в котором только указывалось, что нужно установить один (третий) флажок, но в результате мое ведро все еще блокировало доступ, поэтому снятие последнего флажка было тем, что решило проблему.

Для дальнейшего пояснения первый флажок (который должен быть НЕПРОВЕРЕН) гласит: "Блокировать публичный доступ к корзинам и объектам, предоставленным с помощью новых политик публичных корзин" и второй флажок (который также должен быть UNCHECKED) гласит: "Блокировать общедоступный и кросс-аккаунт доступ к корзинам и объектам с помощью любых общих политик корзин"