2013-11-26 8 views
7

AWS S3を使用して静的なウェブサイトをホスティングしています(利便性と使いやすさを考慮して、しかも安価なので)。静的なウェブサイト上の複数のページAWS S3

私は複数のHTML文書を持っています。私は/name_of_file.htmlを使用してそれらにナビゲートすることができます。 URLに/name_of_fileと表示されるようにHTMLファイルをルーティングする方法はありますか?私はURLの.html拡張子を持っているのが醜いのが好きではなく、むしろ1ページのウェブサイトを避けたいと思います。あなたがそれらをアップロードするときに、ちょうど最後のオフ.html延長を排除する場合

おかげ

答えて

9

は、限り、あなたはtext/htmlに設定Content-typeヘッダーでファイルをアップロードすると、ページが正常に動作します。

それ以外の場合は、S3 Redirectsを使用することが唯一の選択肢ですが、最後に.htmlのないページに移動することはできますが、後でブラウザが.htmlという名前のファイルで、.htmlはまだアドレスバーに表示されるので、おそらく勝者ではありません。

また、これはかなり言及する価値がありますが、HAProxyや他のリバースプロキシサーバーを実行しているEC2インスタンスでリクエストを送って、リダイレクトしないでリダイレクトすると、 .html 'を最後まで使用していますが、その使い勝手の良さを取り戻すことはできますが、必要ならば1つ以上のアカウントを保持することで、アカウントあたり100バケット以上のサイトをホストできるようになります"サイト"を1つのバケットに入れ、要求された各オブジェクトパスに接頭辞を追加します。同じAWS地域内のEC2とS3間のデータ転送は無料であるため、帯域幅の追加料金は発生せず、インスタンス自体のコストになります。


更新(コメント):

AWSコンソールは、メタデータのキーとしてのContent-Typeを選択するので、やや直観に反するかもしれのみtext/plainで、テキスト/ RTFなど、いくつかの選択肢を示唆していますtext/htmlではなく... "Value"ドロップダウンリストは、提案のみを提供しています。半感応性のあるものはすべてここで受け入れられます。

  • (バケット内)アクションを選択→
  • クリック
  • ダイアログボックスで、アップロードするファイルを選択し
  • を「ファイルを追加」をクリック「詳細設定」および適用のボックスに
  • をチェックをアップロード
  • クリック「設定権限」と「公共のすべてのものを作る」チェック(該当する場合)
  • クリック「に設定したメタデータを」
  • 「をより多くのメタデータを追加」
  • クリック
  • の "Key"ドロップダウンリストで "Content-Type"を選択し、 "Value"ボックスに "text/html"と入力します。これは選択肢ではありませんが、これは一般的なあなたがボックスに入れることができるものを制限しません。
  • 「アップロードを開始」をクリックしてください
+0

HTMLの 'Content-type'ヘッダーを意味しますか?それはHTML5で廃止されましたか? –

+1

HTMLにはない...実際のHTTPヘッダーのContent-Typeヘッダーは、オブジェクトに 'GET'または' HEAD'リクエストを送信したときにブラウザに送信されます。これらのヘッダーはオブジェクトにS3に格納されます。コンソールのオブジェクトのメタデータを見ると、私が何を参照しているかがわかります。ファイルをアップロードするとき、コンソールは拡張機能から適切なヘッダーを「推測」するように見えますが、手動で設定することもできます。 –

+0

@AlexChumbley受け入れてくれてありがとう。私は最初の提案、ファイル名から拡張子を削除し、S3の 'Content-Type'ヘッダーを設定して行ったと思いますか? –

関連する問題