У меня есть ведро AWS S3;давайте назовем это example.com
. У меня настроено ведро для статического хостинга веб-сайтов;URL статического сайта, например, может быть http://example.com.s3-website-us-west-1.amazonaws.com
. У меня также есть дистрибутив CloudFront с сертификатом, управляемым AWS, так что, когда я, например, обращаюсь к https://example.com/
, он передает контент из корзины S3 http://example.com.s3-website-us-west-1.amazonaws.com/
. Это все работает как сон.
На моем сайте у меня есть файл https://example.com/foo.html
, который был переименован в https://example.com/bar.html
. Некоторые другие страницы в Интернете могут ссылаться на foo.html
, поэтому в конфигурации моего сегмента S3 я настроил перенаправление для объекта foo.html
, например:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>foo.html</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>bar.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Когда я пытаюсь перейти к http://example.com.s3-website-us-west-1.amazonaws.com/foo.html
, он отправляет HTTP 301
постоянное перенаправление на bar.html
, поэтому я получаю значение http://example.com.s3-website-us-west-1.amazonaws.com/bar.html
, как я и ожидал.
Итак, теперь я развернул корзину S3 в дистрибутиве CloudFront, как объясненовыше. После того, как состояние CloudFront показывает «Развернуто», я перехожу на https://example.com/foo.html
, ожидая, что он будет перенаправлен на https://example.com/bar.html
. О нет;Я направлен на http://example.com.s3-website-us-west-1.amazonaws.com/foo.html
insetad!
Почему дистрибутив CloudFront перенаправляет меня обратно на буквальный URL-адрес корзины S3? Почему объект не перенаправляется на относительный объект в том же контейнере, правильно развернутый в CloudFront?
Обратите внимание, что мне известен другой вопрос AWS Cloudfront, перенаправляющий на корзину S3 , но , который, по-видимому, не является дублирующим вопросом этого , так как другой вопрос относится ко всему сайту CloudFront, временно перенаправляющему на всю корзину S3, а не к отказу отдельного перенаправления объекта S3для развертывания в CloudFront.