2013-08-18 33 views
22

我已經設置了Amazon S3來服務我的靜態網站speakeasylinguistics.com。所有的DNS東西似乎工作正常,因爲dig +recurse +trace www.speakeasylinguistics.com輸出正確的DNS信息。亞馬遜S3下載index.html而不是服務

但是當你使用visit the site in a browser端點時,index.html頁下載,而不是被服務。我該如何解決?

我試過Chrome,Safari,FF。它發生在所有的人身上。我用Amazon's walkthrough上託管的自定義域爲T.

+1

運行curl -I對文件返回:頭中的Content-Disposition:attachment - 這就是導致問題的原因。我*認爲*在文件的元數據中。 – dc5

+0

我解決了這個問題,指定上傳HTML文件到S3時的元數據(content-type = text/html) – PedroHidalgo

回答

25

對您發佈的URL運行卷曲-I給出以下結果:

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中的文件並通過刪除此屬性修改其元數據來更改此控制檯。

16

如果以編程方式執行此操作,則可以在上載中設置ContentType和/或ContentDisposition參數。

[PHP實例]

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

putObject Docs

1

如果您正在使用Hashicorp Terraform你可以指定一個aws_s3_bucket_objectcontent-type如下

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

    content_type = "text/html" 
} 

這應該適當地幫助您的內容在瀏覽器。