Я пытаюсь сделать что-то, что должно быть относительно просто - я хочу установить несколько доменов и субдоменов для перенаправления к базовому домену для нашего сайта, но я хочу произвести перенаправления на Cloudfront. Все работает кроме перенаправления корневого пути - который получает меня XML-файл, частично описывающий блок S3.
S3 позволяет Вам устанавливать блок все-перенаправления, как:
Тестируя это, веб-конечная точка (brass9-com.s3-website-us-west-1.amazonaws.com) делает то, что она должна - это перенаправлять на brass9.com. Хороший.
Cloudfront позволяет Вам указать на блок S3, но способ, которым он предлагает Вас, делает так является неправильным - вместо того, чтобы указать на блок его именем, как brass9-com.s3.amazonaws.com, необходимо использовать веб-Конечную точку выше. Кроме этого можно оставить все в его значениях по умолчанию и получить хорошее поведение перенаправления. Так, путь как www.brass9.com/portfolio правильно перенаправляет туда, где он должен. Также хороший.
Одна вещь, которой затем не удается работать, перенаправляет от плоскости www.brass9.com. Вместо того, чтобы получить Вас перенаправление это получает Вас этот нечетный результат:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
Хорошо.... Таким образом, это не абсолютно неожиданно - потому что нет никакого Корневого объекта По умолчанию. Но какой Корневой объект По умолчанию я возможно указал бы для предотвращения этого поведения? Каково название объекта перенаправления S3, если таковые имеются, на который я должен указать? Или есть ли некоторая другая надлежащая конфигурация, или это - просто ошибка в том, как Cloudfront и S3 взаимодействуют, который должен зафиксировать Amazon?
Возможно указать Корневой объект По умолчанию index.html, но это не помогает никому - это просто изменяет проблему. URL Cloudfront вместо этого перенаправляет к /index.html на основном сайте, который является 404 (мы не используем файл index.html, это - платформа серверной стороны управляемый сайт). Я мог поместить index.html на сервер, но это побеждает небольшой выигрыш в быстродействии использования Cloudfront во-первых.
Один вопрос спрашивает что-то подобное, но возвращает пробел, 0-байтовый ответ по некоторым причинам вместо того, что я вижу, ответ XML. Это не включает вопрос о той проблеме или разрешении.
Одна статья предлагает, чтобы Вы просто раздали весь сайт и на пустом и на www домене. Это завинчивает с закладками любого пользователя, Вашим поисковым рейтингом, и т.д., и т.д. Вы не должны делать этого.
Несколько обсуждают хостинг статического веб-сайта на S3 и Cloudfront, а не схеме перенаправления, и не связаны - также.
Так, как я делаю это правильно?
Снимок экрана Конфигурации Cloudfront - никакой Корневой объект По умолчанию, указывающий на источник S3. Проигнорируйте InProgress - я только что переключил Корневой объект По умолчанию на и прочь протестировать.
И Источник конфигурируется для того Распределения:
Решение. Настройте переадресацию, как указано в вопросе, затем подождите, пока кешируется S3 и CloudFront. Они могут длиться 4 часа и более, поэтому вам просто нужно все это настроить, а затем ждать и надеяться на лучшее.
(Это решение Майкла из комментариев, но прошли годы, и это действительно заслуживает того, чтобы быть отмеченным как Ответил).
Запись в качестве ответа, так как я не могу дать комментарий - из документации по адресу http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements кажется, что вы можете иметь пустой корневой объект по умолчанию:
Если вы не хотите указывать корневой объект по умолчанию при создании a Распределение, включить пустой элемент DefaultRootObject.
Если у вас возникла эта проблема, сначала проверьте, когда вы настраиваете источник корзины s3 для облачного интерфейса, автозаполнение возвращает конечную точку s3 REST domain.amazonaws.com, которая возвращает этот ответ ListBucketResult.
Вы необходимо записать вручную конечную точку веб-сайта domain.s3-website-region.amazonaws.com
Важно: Если вы неправильно настроили облачный интерфейс с конечной точкой REST, вам необходимо аннулировать кеш с помощью Недействительность, иначе он будет продолжать возвращать ответ REST