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

Я собираюсь обслуживать свой статический сайт с помощью 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 при запросе имени каталога?

22
задан bdesham 7 June 2011 в 20:34
поделиться