Подтвердить что ты не робот

Amazon S3 загружает index.html вместо использования

Я установил Amazon S3 для обслуживания моего статического сайта, speakeasylinguistics.com. Весь материал DNS, похоже, работает нормально, потому что dig +recurse +trace www.speakeasylinguistics.com выводит правильную информацию DNS.

Но когда вы посетите сайт в браузере, используя конечную точку, загрузите страницу index.html, а не обслуживайте. Как это исправить?

Я пробовал Chrome, Safari, FF. Это происходит на всех из них. Я использовал прохождение Amazon о размещении пользовательского домена в T.

4b9b3361

Ответ 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"
}

Это должно правильно отображать ваш контент в браузере.