基本概念
静的ウェブサイトとは、静的コンテンツ(例:HTML)やクライアントサイドスクリプトを含むウェブサイトのことです。ユーザーはオブジェクトストレージコンソールを通じて、カスタムドメインを紐付けたバケットに静的ウェブサイトを設定できます。一方、動的ウェブサイトのコンテンツにはPHP、JSP、ASP.NETなどのサーバーサイドスクリプトが含まれ、サーバー側に依存して処理する必要があります。Cloud Object Storage(COS)は静的ウェブサイトのホスティングをサポートしていますが、サーバーサイドスクリプトの作成はサポートしていません。動的ウェブサイトをデプロイしたい場合は、サーバーサイドのコードデプロイには、Cloud Virtual Machine(CVM)のご利用をお勧めします。
ここでは静的ウェブサイトをホスティングする機能について、例を挙げて紹介します。
ユーザーがexamplebucket-1250000000という名前のバケットを作成し、次のファイルをアップロードしたとします。
index.html
404.html
403.html
test.html
docs/a.html
images/
静的ウェブサイト
有効化前:次のようなデフォルトアクセスドメイン名を使用してバケットにアクセスすると、ダウンロードの表示がポップアップされ、index.htmlファイルをローカルに保存することができます。
https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/index.html
有効化後:次のようなアクセスノードを使用してバケットにアクセスすると、ブラウザで直接index.htmlのページ内容を確認することができます。
https://examplebucket-1250000000.cos-website.ap-guangzhou.myqcloud.com/index.html
強制HTTPS
有効化前:リクエストのソースがHTTPの場合、アクセスノードのURLはHTTPの暗号化されていない転送プロトコルを維持します。
http://examplebucket-1250000000.cos-website.ap-guangzhou.myqcloud.com
有効化後:リクエストのソースがHTTPとHTTPSのどちらであっても、アクセスノードは常にHTTPSの暗号化された転送プロトコルを維持します。
https://examplebucket-1250000000.cos-website.ap-guangzhou.myqcloud.com
インデックスドキュメント
インデックスドキュメント(静的ウェブサイトのホームページ)は、ユーザーがウェブサイトのルートディレクトリまたは任意のサブディレクトリにリクエストを送信したときに返されるページで、通常このページはindex.htmlと命名されます。
ユーザーがバケットのアクセスドメイン名(例:https://examplebucketbucket-1250000000.cos-website.ap-guangzhou.myqcloud.com)を使用して静的ウェブサイトにアクセスし、なおかつ特定のページをリクエストしていない場合、Webサーバーからはトップページが返されます。
ユーザーがバケットのルートディレクトリを含む任意のディレクトリにアクセスする際、URLの末尾が/で終わる場合、そのディレクトリ内のインデックスドキュメントが優先的に自動的にマッチングされます。ルートレベルのURLの/は省略可能です。以下のいずれかのURLもインデックスドキュメントを返します。
http://www.examplebucket.com/
http://www.examplebucket.com
注意:
バケット内にフォルダを作成した場合、各フォルダレベルでインデックスドキュメントを追加する必要があります。
エラードキュメント
エラードキュメントを設定する前に次のページにアクセスした場合、ステータスコード404が返され、ページ上にデフォルトのエラーページメッセージが表示されます。
https://examplebucket-1250000000.cos-website.ap-guangzhou.myqcloud.com/webpage.html
エラードキュメントを設定すると、次のページにアクセスした場合、同じようにステータスコード404が返されますが、ページ上には指定したエラーページメッセージが表示されます。
https://examplebucket-1250000000.cos-website.ap-guangzhou.myqcloud.com/webpage.html
リダイレクトルール
説明:
静的ウェブサイトでホスティングでリダイレクトルールを設定する場合、置換先のドキュメントのパスはバケット内のオブジェクトパスである必要があります。
リダイレクトルールの優先順位は、まず強制HTTPSまたはプレフィックスマッチによるリダイレクトがトリガーされ、最後にエラーコードによるリダイレクトがトリガーされます。
エラーコードのリダイレクト設定
例えばwebpage.htmlというドキュメントにプライベート読み取り/書き込みのパブリックアクセス権限を設定した場合、ユーザーがこのファイルにアクセスすると、403エラーが返されます。
エラーコード403を403.htmlにリダイレクトすると、ブラウザは403.htmlの内容を返します。
403.htmlドキュメントを設定していない場合、ブラウザはエラードキュメントまたはデフォルトのエラーメッセージを返します。
プレフィックスマッチングの設定
注意:
プレフィックスマッチングはワイルドカードをサポートしていません。プレフィックスを index1/、index2/ という2つのフォルダとしてリダイレクトしたい場合、 index*/ をマッチングルールとして使用することはできず、対応するマッチングルールをそれぞれ作成する必要があります。
フォルダをdocs/からdocuments/にリネームした後、ユーザーがdocs/フォルダにアクセスするとエラーが発生します。そのため、プレフィックスdocs/へのリクエストをdocuments/へリダイレクトさせることができます。
images/フォルダを削除した場合(つまり、プレフィックスimages/を持つすべてのオブジェクトを削除した場合)、プレフィックスimages/を持つ任意のオブジェクトへのリクエストをtest.htmlページへリダイレクトするルールを追加できます。
利用シナリオ
COSコンソールを通じて、バケットを静的ウェブサイトとしてホスティング設定し、バケットの静的ウェブサイトドメイン経由で静的ウェブサイトにアクセスできます。
注意事項
静的ウェブサイトを外部に公開しない場合は、バケットのアクセス権限をプライベート読み書きに設定し、CDNオリジン認証やCDN認証方式を利用してデータの全経路を保護することを推奨します。詳細はCDNアクセラレーション設定をご参照ください。 静的ウェブサイトをすべての人に公開したい場合は、バケットのアクセス権限をパブリック読み取り/プライベート書き込みに設定できますが、この設定によりリソースが不正に利用リスクが生じるため、設定は、慎重に行ってください。リスクを低減させるため、不正利用防止ガイドラインをご参照ください。 静的ウェブサイト設定を有効にし、カスタムドメインを設定した後、COSオリジンサーバーへのアクセスにはカスタムドメインを使用する必要があります。COSのデフォルトドメインでアクセスした場合、静的ウェブサイトとしての効果(例:レイアウトの正常な表示など)は得られません。
前提条件
バケットが作成されました。詳細はバケットの作成ドキュメントをご参照ください。 操作手順
静的ウェブサイトの有効化
2. 左側のナビゲーションメニューで、バケットリストをクリックし、バケットリストのページに移動します。
3. 静的ウェブサイトとしてホスティングしたいバケットを見つけ、そのバケット名をクリックし、バケット詳細ページに移動します。
4. 左側のナビゲーションメニューで、権限管理 > バケットのアクセス権限の順に選択し、パブリック権限の項目でパブリック読み取り/プライベート書き込みを選択して保存します。
5. 左側のナビゲーションメニューで、基本設定 > 静的ウェブサイトの順に選択し、静的ウェブサイトの項目で編集をクリックして、現在のステータスのスイッチをオンにします。
6. 静的ウェブサイトの設定項目を順番に記入します。
設定項目の説明は以下の通りです。
アクセスノード:静的ウェブサイトを有効にすると、そのバケットに関連付けられた静的ウェブサイトのアクセスノード(静的ウェブサイトドメイン)が払い出されます。このアクセスノードはGET/HEAD Object操作のみをサポートします。
注意:
静的ウェブサイトのアクセスノードでは、英字の大文字と小文字が区別されます。インデックスドキュメント、エラードキュメント、リダイレクトルールのプレフィックスマッチで指定するファイル名と拡張子は、バケット内のファイルと大文字・小文字を一致させてください。
HTTPS強制(任意):HTTPS強制を有効にすると、ユーザーが静的ウェブサイトにアクセスした際に、静的ウェブサイトのアクセスノードは強制的にHTTPSプロトコルを使用します。
注意:
カスタムドメイン経由で静的ウェブサイトにアクセスする場合、かつ静的ウェブサイトでHTTPSを強制する場合、そのカスタムドメインに適切な証明書が設定されていることをご確認ください。証明書に異常がある場合、デフォルトドメインへリダイレクトされます。
html拡張子を省略(任意):アクセスパスがindexの場合、自動的にindex.htmlオブジェクトをマッチングして返します。
インデックスドキュメント(必須):インデックスドキュメントは静的ウェブサイトのホームページです。ユーザーがウェブサイトのルートディレクトリまたは任意のサブディレクトリにリクエストを送信した際に返されるウェブページで、通常はindex.htmlと名付けられます。
注意:
バケット内にフォルダを作成し、そのフォルダを参照するウェブページがある場合、各フォルダ階層にもインデックスドキュメントを追加する必要があります。
2024年1月1日以降に作成されたバケットで、静的ウェブサイトドメインを使用してアクセスする場合、インデックスドキュメントはリクエスト時にウェブコンテンツを直接返さず、直接ダウンロードされます。
エラードキュメント(任意):エラードキュメントは、静的ウェブサイトへのアクセスでエラーが発生した後に返されるページです。この設定項目により、エラードキュメントを自由に定義できます。静的ウェブサイトがユーザーのリクエストに応答できない場合、指定されたカスタムエラーページが返されます。例えば、error.htmlというエラードキュメントを設定しておくと、ユーザーがアクセス時にHTTPエラーに遭遇した際に、error.htmlページが表示され、支援ガイダンスを提供します。エラードキュメントを設定しない場合は、ユーザーがアクセス時にHTTPエラーに遭遇した際に、デフォルトのエラー情報が表示されます。
注意:
エラードキュメントには、バケットのルートディレクトリまたはサブディレクトリ内のファイルを設定できます。ブラウザが認識可能な.htmlや.htmなどの形式のファイルを使用してください。.zipファイルなど、ブラウザが認識できないファイルを使用した場合、ほとんどのブラウザはエラーを表示するか、アクセスリクエストを拒否します。
エラードキュメントのレスポンスコード:エラードキュメントが設定されている場合に表示されます。エラードキュメントを返す際のHTTPレスポンスコードを、元のエラーコードまたは200に設定できます。
リダイレクトルール(任意):リダイレクトルールを使用すると、特定のファイルパス、リクエストのプレフィックス、またはレスポンスコードに基づいて、リクエストを条件付きでリダイレクトできます。
例えば、バケット内のファイルを削除またはリネームした場合、そのファイルへのアクセスリクエストを他のファイルにリダイレクトするルールを追加できます。
タイプ:リダイレクトルールの元のタイプを指します。
エラーコード:現在、リダイレクトルールは4xxエラーコード(例:404)に対するリダイレクト設定のみをサポートしています。オプションでカスタムエラーページを定義でき、ユーザーが対応するHTTPエラーをトリガーした場合、そのエラーページをカスタマイズを提供できます。
プレフィックスマッチ:バケット内のファイルまたはフォルダに対して、プレフィックスマッチルールを使用してリダイレクト設定を行うことができます。具体的な例については、リダイレクトルールの例をご参照ください。 注意:
プレフィックスマッチはワイルドカードをサポートしていません。プレフィックスがindex1/、index2/の2つのフォルダをリダイレクトしたい場合、index*/のようなマッチングルールは使用できず、それぞれに対応するマッチングルールを個別に作成する必要があります。
説明:リダイレクトルールの元のエラーコードまたはプレフィックスです。
ルール:リダイレクトルールの置換ルールです。置換パスと置換プレフィックスが含まれます。
タイプでエラーコードを選択した場合、ルールはデフォルトで「置換パス」になります。置換パスとは、リダイレクトルールがトリガーされた後、元のリクエストアドレスが新しいページのパスに置き換えられることを指します。
タイプでプレフィックスを選択した場合、ルールは「置換パス」または「置換プレフィックス」を選択できます。
注意:
置換パスはバケット内のオブジェクトパスである必要があります。
置換内容:置換されるファイルパスまたはプレフィックスです。
7. 設定完了後、保存をクリックします。
カスタムドメインの設定
2024年1月1日以降に作成されたバケットについては、ユーザーがデフォルトのドメイン(静的ウェブサイトドメインを含む)経由でファイルにアクセスする場合、プレビューに対応しません。したがって、静的ウェブサイトを有効化 した後、静的ウェブサイトをプレビューするには、カスタムドメインを設定・使用する必要があります。操作手順は以下の通りです。 1. COSコンソールにログインし、バケットの詳細ページに移動して、ドメインと転送管理 > カスタムオリジンドメインを選択します。 2. カスタムオリジンドメインエリアで、ドメインの追加をクリックし、カスタムドメインを入力します(もしなければ、ドメインを登録してから入力してください)。オリジンタイプは静的ウェブサイトオリジンを選択してください。設定項目の詳細については、カスタムオリジンドメインの有効化をご参照ください。 3. カスタムドメインを有効にするには、静的ウェブサイトのCNAMEドメインにカスタムドメインの解決を設定する必要があります。HTTPSアクセスが必要な場合は、HTTPS証明書を紐付ける必要があります。詳細はドメイン解決の設定および証明書の紐付けをご参照ください。