2013-08-18 11 views
22

Ich habe Amazon S3 eingerichtet, um meine statische Website speakeasylinguistics.com zu bedienen. Alles DNS-Zeug scheint in Ordnung zu sein, weil dig +recurse +trace www.speakeasylinguistics.com die richtigen DNS-Informationen ausgibt.Amazon S3 lädt index.html statt

Aber wenn Sie visit the site in a browser mit dem Endpunkt, die index.html Seite Downloads, anstatt bedient werden. Wie behebe ich das?

Ich habe versucht, Chrome, Safari, FF. Es passiert bei allen von ihnen. Ich benutzte Amazon's walkthrough auf

+1

laufenden curl -I gegen die Datei gibt zurück: 'Content-Disposition: Anhang' in den Headern - das ist, was das Problem verursacht. Ich denke, das ist in den Metadaten für die Datei. – dc5

+0

Ich löste dieses Problem beim Angeben der Metadaten (content-type = text/html) beim Hochladen der html-Datei nach S3 – PedroHidalgo

Antwort

25

Lauf curl -I gegen die URL einer benutzerdefinierten Domain zu einem T.-Hosting Sie das folgende Ergebnis gepostet gibt:

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 

Diese Linie ist der Täter:

Content-Disposition: attachment 

Wenn Sie die AWS-Konsole verwenden, glaube ich, dass dies geändert werden kann, indem Sie die Datei in S3 auswählen und ihre Metadaten ändern, indem Sie diese Eigenschaft entfernen.

16

Wenn Sie dies programmgesteuert tun, können Sie die ContentType und/oder ContentDisposition Parameter in Ihrem Upload festlegen.

[PHP Beispiel]

 $output = $s3->putObject(array(
      'Bucket' => $bucket, 
      'Key' => md5($share). '.html', 
      'ContentType' => 'text/html', 
      'Body' => $share, 
    )); 

putObject Docs

1

Wenn Sie Hashicorp Terraform verwenden Sie die content-type auf einem aws_s3_bucket_object angeben können als

resource "aws_s3_bucket_object" "index" { 
    bucket = "yourbucketnamehere" 
    key = "index.html" 
    content = "<h1>Hello, world</h1>" 

    content_type = "text/html" 
} 

folgt Dies sollte Ihre Inhalte in geeigneter Weise in die dienen Browser.