Почему Amazon S3 автоматически не обслуживает /foo/index.html, когда я запрашиваю / foo или / foo /? - PullRequest
22 голосов
/ 08 июня 2011

Я пытаюсь обслуживать мой статический сайт с помощью Amazon S3. Я создал ведро и загрузил мои файлы; На вкладке «Веб-сайт» в Консоли управления AWS я установил флажок «Включен» и ввел index.html в поле «Индексный документ». У меня есть следующая политика ведра:

{
    "Version": "2008-10-17",
    "Id": "924a2348-de0e-43aa-bb06-83adbcd1db22",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]

}

где у меня есть имя моего ведра вместо my-bucket. На вкладке «Разрешения» я также предоставил «Всем» возможность списка.

Если я пытаюсь получить доступ к my-bucket.s3.amazonaws.com/index.html, моя страница (и ее изображения, CSS и т. Д.) Отображаются должным образом. Однако, просто перейдя к my-bucket.s3.amazonaws.com или my-bucket.s3.amazonaws.com/, вы получите XML-файл списка каталогов вместо отображения страницы. Если я пытаюсь перейти к my-bucket.s3.amazonaws.com/subdirectory, я получаю сообщение об ошибке (в XML), в котором говорится, что «указанный ключ не существует». Наиболее странно, если я пытаюсь перейти к my-bucket.s3.amazonaws.com/subdirectory/ (с завершающей косой чертой), страница не загружается, но мой браузер загружает пустой файл с именем download. (Еще раз, переход к my-bucket.s3.amazonaws.com/subdirectory/index.html показывает страницу, как и ожидалось.)

Я что-то здесь не так делаю? Как заставить S3 показывать файл index.html при запросе имени каталога?

1 Ответ

13 голосов
/ 08 июня 2011

Похоже, вам нужно настроить корневой (индексный) документ:

http://docs.amazonwebservices.com/AmazonS3/latest/dev/IndexDocumentSupport.html

http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...