2013-11-26 2 views
7

AWS S3을 사용하여 정적 웹 사이트를 호스팅하고 있습니다 (편의성, 사용 편의성 및 가격이 저렴함).정적 웹 사이트의 여러 페이지 AWS S3

여러 HTML 문서가있는 경우. /name_of_file.html을 사용하여 탐색 할 수 있습니다. URL에 /name_of_file이 표시되도록 HTML 파일을 라우팅하는 방법이 있습니까? 나는 URL의 .html 확장자를 가진 추함을 좋아하지 않으며 단일 페이지 웹 사이트를 피하는 편이 낫습니다. 당신이 그들을 업로드 할 때 그냥 말 오프 .html 확장을 제거 할 경우

감사

답변

9

은 당신이 text/html로 설정 Content-type 헤더 파일을 업로드로, 페이지가 잘 작동합니다.

그렇지 않으면 마음에 떠오르는 유일한 옵션은 S3 Redirects이지만, 끝까지 .html이없는 페이지 만 "탐색"할 수 있습니다. 그러나 나중에 브라우저가 .html이라는 파일과 .html이 여전히 검색 주소창에 나타나기 때문에 승자가 아닐 수도 있습니다.

번갈아 가며 언급할만한 가치가 있습니다. HAProxy 또는 다른 역방향 프록시 서버를 실행하는 EC2 인스턴스를 통해 요청을 퍼널 할 수 있으며 점을 포함하지 않는 요청을 다시 작성하여 리디렉션 할 수 있습니다. .html '로 끝나지 만 일종의 "사용 편의성"측면을 취소합니다. 계정 제한 당 100 버킷보다 훨씬 많은 사이트를 호스팅 할 수는 있지만 필요한 경우 하나 이상을 유지함으로써 단일 버킷에 "site"를 추가하고 요청 된 각 객체 경로에도 접두어를 추가합니다. 동일한 AWS 지역 내에서 EC2와 S3 사이의 데이터 전송은 무료이므로 추가 대역폭 비용 (인스턴스 자체의 비용)이 발생하지 않습니다. (주석에서)


업데이트 :

AWS 콘솔은 메타 데이터 키로 콘텐츠 유형을 선택 이후 약간의 직관 할 수 만 건의/RTF 텍스트/일반 텍스트 등 몇 가지 선택, 텍스트/HTML은 아니지만 ... "값"드롭 다운 목록은 제안 만 제공합니다. 반 감각적 인 것은 받아 들여질 것입니다. 조치 →

  • 클릭이 적용 가능한 모든 상자를 대화 상자에서,
  • 클릭 "세트"를
  • 업로드 할 파일을 선택 "파일 ​​추가"체크 업로드 선택 (양동이)

    • 클릭 "권한 설정"과 "공공 모든 것을 할"확인 (해당되는 경우)
    • 클릭 "설정 메타 데이터를"
    • "를 더 메타 데이터를 추가"
    • 클릭
    • "Key"드롭 다운 목록에서 "Content-Type"을 선택하고 "Value"상자에 "text/html"을 입력하십시오. 이것은 제공되는 선택 사항이 아니지만 일반적인 목록 일뿐입니다 상자에 넣을 수있는 내용을 제한하지 않습니다.
    • "업로드 시작"을 클릭하십시오.
  • +0

    HTML의'Content-type' 헤더를 의미합니까? HTML5가 그다지 사용되지 않았습니까? –

    +1

    HTML에 없음 ... 실제 HTTP 헤더에있는 Content-Type 헤더는 객체에 대해 'GET'또는 'HEAD'요청을 보낼 때 브라우저에 전송됩니다.이 헤더는 S3에 객체와 함께 저장됩니다. 콘솔에서 개체에 대한 메타 데이터를 살펴보면 내가 언급 한 내용을 볼 수 있습니다. 파일을 업로드 할 때 콘솔에서 확장 프로그램의 해당 헤더를 "추측"하지만 수동으로 설정할 수도 있습니다. –

    +0

    @AlexChumbley 수락 해 주셔서 감사합니다. 첫 번째 제안과 함께 확장명을 파일 이름에서 삭제하고 S3의'Content-Type' 헤더를 설정 했습니까? –