Amazon S3 загружает index.html вместо использования
Я установил Amazon S3 для обслуживания моего статического сайта, speakeasylinguistics.com
. Весь материал DNS, похоже, работает нормально, потому что dig +recurse +trace www.speakeasylinguistics.com
выводит правильную информацию DNS.
Но когда вы посетите сайт в браузере, используя конечную точку, загрузите страницу index.html
, а не обслуживайте. Как это исправить?
Я пробовал Chrome, Safari, FF. Это происходит на всех из них. Я использовал прохождение Amazon о размещении пользовательского домена в T.
Ответы
Ответ 1
Запуск curl -I против отправленного вами URL-адреса дает следующий результат:
curl -I http://speakeasylinguistics.com.s3-website-us-east-1.amazonaws.com/
HTTP/1.1 200 OK
x-amz-id-2: DmfUpbglWQ/evhF3pTiXYf6c+gIE8j0F6mw7VmATOpfc29V5tb5YTeojC68jE7Rd
x-amz-request-id: E233603809AF9956
Date: Sun, 18 Aug 2013 07:58:55 GMT
Content-Disposition: attachment
Last-Modified: Sun, 18 Aug 2013 07:05:20 GMT
ETag: "eacded76ceb4831aaeae2805c892fa1c"
Content-Type: text/html
Content-Length: 2585
Server: AmazonS3
Эта строка является виновником:
Content-Disposition: attachment
Если вы используете консоль AWS, я считаю, что это можно изменить, выбрав файл в S3 и изменив его метаданные, удалив это свойство.
Ответ 2
Если вы делаете это программно, вы можете установить параметры ContentType
и/или ContentDisposition
в вашей загрузке.
[Пример PHP]
$output = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => md5($share). '.html',
'ContentType' => 'text/html',
'Body' => $share,
));
putObject Docs
Ответ 3
Если вы используете Hashicorp Terraform, вы можете указать content-type
для объекта aws_s3_bucket_object следующим образом
resource "aws_s3_bucket_object" "index" {
bucket = "yourbucketnamehere"
key = "index.html"
content = "<h1>Hello, world</h1>"
content_type = "text/html"
}
Это должно правильно отображать ваш контент в браузере.