すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:静的 Web サイトホスティング

最終更新日:Mar 25, 2025

静的 Web サイトとは、HTML や CSS などの形式の画像や small ファイルを含む、静的オブジェクトで主に構成される Web サイトのことです。静的 Web サイトホスティング機能を使用すると、Object Storage Service (OSS) バケットで静的 Web サイトをホストし、バケットのドメイン名を使用して Web サイトにアクセスできます。

背景情報

デフォルトホームページと 404 ページ

静的 Web サイトホスティング機能を有効にする場合は、Web サイトのデフォルトホームページとデフォルト 404 ページを指定する必要があります。

  • デフォルトホームページは、ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスすると表示されます。

  • デフォルト 404 ページは、OSS によって返されるエラーページです。ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスし、404 エラーが発生した場合、OSS はデフォルト 404 ページを返します。

ブラウザの動作

データセキュリティを確保するため、中国本土のリージョンでは 2018 年 9 月 28 日から、中国本土以外のリージョンでは 2019 年 9 月 25 日から、MIME タイプが text/html で、名前拡張子が HTM、HTML、JSP、PLG、HTX、または STM である静的 Web ページオブジェクトにブラウザを使用してアクセスする場合、次の制限が有効になります。

  • デフォルトの OSS ドメイン名を使用して静的 Web ページオブジェクトにアクセスすると、次のヘッダーが応答に自動的に追加されます。Content-Disposition:attachment。ブラウザを使用してオブジェクトにアクセスすると、オブジェクトは添付ファイルとしてダウンロードされます。

  • カスタムドメイン名を使用して、特定の形式で Web ページオブジェクトをプレビューできるブラウザを使用して静的 Web ページオブジェクトにアクセスすると、オブジェクトのコンテンツがプレビューされます。

課金

静的 Web サイトホスティング機能を使用すると、以下の料金が発生する場合があります。

  • ストレージ料金

    HTML、CSS、JavaScript、画像などの静的 Web ページオブジェクトの保存に使用されるストレージ容量に基づいて課金されます。詳細については、「ストレージ料金」をご参照ください。

  • トラフィック料金

    静的 Web サイトへのアクセス時に発生するアウトバウンドトラフィック (デフォルトホームページ、画像、スクリプトなどのすべての静的リソースを含む) と、デフォルト 404 ページが返されたときに発生するアウトバウンドトラフィック。詳細については、「トラフィック料金」をご参照ください。

  • API 操作呼び出し料金

    デフォルトホームページ、その他のページ、静的リソース、およびデフォルト 404 ページにアクセスするために OSS に GET リクエストを送信すると、課金されます。詳細については、「リクエスト料金」をご参照ください。

バケットで静的 Web サイトをホストした後、デフォルトホームページと同じ名前のオブジェクトをバケットにアップロードする必要があります。例: index.html。バケットに subdir/ という名前のディレクトリがある場合は、index.html オブジェクトをディレクトリにアップロードする必要があります。さらに、デフォルト 404 ページと同じ名前のオブジェクトをバケットにアップロードする必要があります。例: error.html。次のセクションは、サンプルバケット内のオブジェクトとディレクトリの構造を示しています。

Bucket
 ├── index.html
 ├── error.html
 ├── example.txt
 └── subdir/
      └── index.html 

この例では、カスタムドメイン名 example.com がバケットにバインドされ、バケットでホストされている静的 Web サイトのデフォルトホームページは index.html で、Web サイトのデフォルト 404 ページは error.html です。カスタムドメイン名を使用して静的 Web サイトにアクセスすると、OSS は、Web サイトをホストするバケットの静的ページの構成に基づいて異なる応答を返します。

  • [サブフォルダホームページ] が無効になっている場合:

    • https://example.com/https://example.com/subdir/ にアクセスすると、OSS は https://example.com/index.html を返します。

    • https://example.com/example.txt にアクセスすると、example.txt オブジェクトが取得されます。

    • https://example.com/object にアクセスすると、object オブジェクトが存在しない場合、OSS は https://example.com/error.html を返します。

  • [サブフォルダホームページ] が有効になっている場合:

    • https://example.com/ にアクセスすると、OSS は https://example.com/index.html を返します。

    • https://example.com/subdir/ にアクセスすると、OSS は https://example.com/subdir/index.html を返します。

    • https://example.com/example.txt にアクセスすると、example.txt オブジェクトが取得されます。

    • https://example.com/object にアクセスすると、object オブジェクトが存在しないため、[サブフォルダ 404 ルール] の構成に基づいて、OSS は次のいずれかの応答を返します。

      • [サブフォルダ 404 ルール] がデフォルト値の [リダイレクト] に設定されている場合、OSS は object/index.html が存在するかどうかを引き続き確認します。 object/index.html が存在する場合、OSS は HTTP ステータスコード 302 を返し、リクエストを https://example.com/object/index.html にリダイレクトします。 object/index.html が存在しない場合、OSS は HTTP ステータスコード 404 を返し、https://example.com/error.html が存在するかどうかを確認します。

      • [サブフォルダ 404 ルール] が [NoSuchKey] に設定されている場合、OSS は HTTP ステータスコード 404 を返し、https://example.com/error.html が存在するかどうかを確認します。

      • [サブフォルダ 404 ルール] が [インデックス] に設定されている場合、OSS は object/index.html オブジェクトが存在するかどうかを引き続き確認します。オブジェクトが存在する場合、OSS は HTTP ステータスコード 200 とオブジェクトのコンテンツを返します。オブジェクトが存在しない場合、OSS は https://example.com/error.html が存在するかどうかを確認します。

前提条件

デフォルトホームページと 404 ページとして指定するオブジェクトは、バケットのルートディレクトリに保存し、パブリックアクセスを許可する必要があります。 [サブフォルダホームページ] を有効にする場合は、オブジェクトをサブディレクトリにも保存する必要があります。

指定されたオブジェクトへのパブリックアクセスを許可するには、オブジェクトのアクセス制御リスト (ACL) を public-read に設定する必要があります。詳細については、「オブジェクトの ACL を構成する」をご参照ください。

方法

OSS コンソールを使用する

  1. 静的 Web サイトホスティングを構成します。

    • [サブフォルダホームページ] が無効になっている場合:

      前の例では、バケットの subdir/ サブディレクトリにアクセスすると、subdir/ サブディレクトリにある index.html という名前のオブジェクトではなく、バケットのルートディレクトリにある index.html という名前のデフォルトホームページオブジェクトが返されます。また、バケットに存在しないオブジェクトにアクセスすると、指定されたデフォルト 404 ページが返されます。次の手順を実行します。

      1. OSS コンソールにログオンします。

      2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

      3. 左側のナビゲーションツリーで、[データ管理] > [静的ページ] を選択します。

      4. [静的ページ] ページで、[設定] をクリックし、パラメータを構成します。次の表にパラメータを示します。静态页面

        パラメータ

        説明

        [デフォルトホームページ]

        ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスすると表示されるデフォルトホームページ。この例では、このパラメータは index.html に設定されています。

        [サブフォルダホームページ]

        バケットのサブディレクトリホームページ機能を有効にするかどうかを指定します。この例では、[無効] が選択されています。この場合、バケットのルートディレクトリ、または URL がスラッシュ (/) で終わるサブディレクトリにアクセスすると、バケットのルートディレクトリにあるデフォルトホームページが返されます。

        [デフォルト 404 ページ]

        アクセスしようとしているオブジェクトがバケットに存在せず、HTTP ステータスコード 404 が返された場合に返されるエラーページ。バケットのルートディレクトリにあるオブジェクトのみをデフォルト 404 ページとして指定できます。この例では、このパラメータは error.html に設定されています。

        [エラーページステータスコード]

        エラーページとともに返される HTTP ステータスコード。有効な値: [404] および [200]

      5. [保存] をクリックします。

    • [サブフォルダホームページ] が有効になっている場合:

      前の例では、バケットの subdir/ サブディレクトリにアクセスすると、バケットのサブディレクトリにある index.html という名前のデフォルトホームページオブジェクトが返されます。また、バケットに存在しないオブジェクトにアクセスすると、指定されたデフォルト 404 ページと、指定されたサブディレクトリ 404 ルールに基づく結果が返されます。次の手順を実行します。

      1. [静的ページ] ページで、[設定] をクリックし、パラメータを構成します。次の表にパラメータを示します。静态页面2

        パラメータ

        説明

        [デフォルトホームページ]

        ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスすると表示されるデフォルトホームページ。この例では、このパラメータは index.html に設定されています。

        [サブフォルダホームページ]

        バケットのサブディレクトリホームページ機能を有効にするかどうかを指定します。この例では、[有効] が選択されています。バケットの [サブフォルダホームページ] を有効にした後、バケットのルートディレクトリにアクセスすると、ルートディレクトリにあるデフォルトホームページが返されます。 URL がスラッシュ (/) で終わるサブディレクトリにアクセスすると、サブディレクトリにあるデフォルトホームページが返されます。たとえば、https://examplebucket.oss-cn-hangzhou.aliyuncs.com/subdir/ にアクセスすると、index.htmlsubdir/ ディレクトリにある という名前のデフォルトホームページオブジェクトが返されます。

        [サブフォルダ 404 ルール]

        [サブフォルダホームページ] 機能が有効になっている場合のバケットのサブディレクトリ 404 ルール。バケットに存在しないオブジェクトにアクセスすると、OSS は指定されたサブディレクトリ 404 ルールに基づいて異なる結果を返します。たとえば、https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir を使用して、バケットに存在しない exampledir という名前のオブジェクトにアクセスすると、OSS は、このパラメータに指定した値に基づいて異なる結果を返します。有効な値:

        • [リダイレクト] (デフォルト): OSS は exampledir/index.html オブジェクトが存在するかどうかを確認します。

          • オブジェクトが存在する場合、OSS は HTTP ステータスコード 302 を返し、リクエストを https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir/index.html にリダイレクトします。

          • オブジェクトが存在しない場合、OSS は HTTP ステータスコード 404 を返し、https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html オブジェクトが存在するかどうかを確認します。オブジェクトが存在しない場合、OSS は HTTP ステータスコード 404 を返します。

        • [nosuchkey]: OSS は HTTP ステータスコード 404 を返し、https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html オブジェクトが存在するかどうかを確認します。

        • [インデックス]: OSS は exampledir/index.html オブジェクトが存在するかどうかを確認します。

          • オブジェクトが存在する場合、OSS は HTTP ステータスコード 200 とオブジェクトのコンテンツを返します。

          • このオブジェクトが存在しない場合、OSS は https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html オブジェクトが存在するかどうかを確認します。

        [デフォルト 404 ページ]

        アクセスしようとしているオブジェクトがバケットに存在せず、HTTP ステータスコード 404 が返された場合に返されるエラーページ。バケットのルートディレクトリにあるオブジェクトのみをデフォルト 404 ページとして指定できます。この例では、このパラメータは error.html に設定されています。

        [エラーページステータスコード]

        エラーページとともに返される HTTP ステータスコード。有効な値: [404] および [200]

      2. [保存] をクリックします。

  2. デフォルトホームページを作成してアップロードします。

    examplebucket バケットの静的 Web サイトホスティングを構成するときにデフォルトホームページを index.html に設定した場合は、index.html という名前のオブジェクトをバケットのルートディレクトリにアップロードする必要があります。バケットの [サブフォルダホームページ] を有効にする場合は、index.html オブジェクトをバケットの subdir/ サブディレクトリにもアップロードする必要があります。

    1. index.html という名前のファイルを作成します。 index.html ファイルの内容は、次の例のようになります。

      <html>
      <head>
          <title>My Website Home Page</title>
          <meta charset="utf-8">
      </head>
      <body>  
        <p>Now hosted on OSS.</p>
      </body>
      </html>
    2. index.html ファイルをローカルパスに保存します。

    3. index.html ファイルを examplebucket バケットのルートディレクトリと subdir/ サブディレクトリにアップロードします。 index.html オブジェクトの ACL を public-read に設定します。

      オブジェクトのアップロード方法の詳細については、「シンプルアップロード」をご参照ください。

  3. デフォルト 404 ページを作成してアップロードします。

    examplebucket バケットの静的 Web サイトホスティングを構成するときにデフォルト 404 ページを error.html に設定した場合は、error.html という名前のファイルを examplebucket バケットのルートディレクトリにアップロードする必要があります。

    1. error.html という名前のファイルを作成します。 error.html ファイルの内容は、次の例のようになります。

      <html>
      <head>
          <title>Hello OSS!</title>
          <meta charset="utf-8">
      </head>
      <body>  
        <p>This is error 404 page.</p>
      </body>
      </html>
    2. error.html ファイルをローカルパスに保存します。

    3. error.html ファイルを examplebucket バケットのルートディレクトリにアップロードします。 index.html オブジェクトの ACL を public-read に設定します。

OSS SDK を使用する

次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用して静的 Web サイトホスティングを構成する方法の例を示しています。他のプログラミング言語の OSS SDK を使用して静的 Web サイトホスティングを構成する方法の詳細については、「概要」をご参照ください。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.SetBucketWebsiteRequest;

public class Demo {

    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントを使用しています。実際のエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。例: examplebucket。
        String bucketName = "examplebucket";
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // バケットの名前を指定します。
            SetBucketWebsiteRequest request = new SetBucketWebsiteRequest(bucketName);
            // バケットでホストされている静的 Web サイトのデフォルトホームページを指定します。
            request.setIndexDocument("index.html");
            // バケットでホストされている静的 Web サイトのデフォルト 404 ページを指定します。
            request.setErrorDocument("error.html");
            ossClient.setBucketWebsite(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\WebsiteConfig;

// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントを使用しています。実際のエンドポイントを指定してください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。例: examplebucket。
$bucket= "examplebucket";

// バケットでホストされている静的 Web サイトのデフォルトホームページを index.html に、デフォルト 404 ページを error.html に設定します。
$websiteConfig = new WebsiteConfig("index.html", "error.html");
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putBucketWebsite($bucket, $websiteConfig);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            
#-*-coding:utf-8-*-
import oss2
from oss2.models import BucketWebsite
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョンを指定します。例: cn-hangzhou。V4 署名アルゴリズムを使用する場合は、このパラメータが必要です。
region = "cn-hangzhou"

# examplebucket をバケットの名前に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# 静的 Web サイトホスティングを有効にし、デフォルトホームページを index.html に設定し、デフォルト 404 ページを error.html に設定します。
bucket.put_bucket_website(BucketWebsite('index.html', 'error.html'))           
package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // OSSClient インスタンスを作成します。
    // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。実際のエンドポイントを指定してください。
    // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。実際のリージョンを指定してください。
    clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    clientOptions = append(clientOptions, oss.Region("yourRegion"))
    // 署名アルゴリズムのバージョンを指定します。
    clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    if err != nil {
    	    fmt.Println("Error:", err)
            os.Exit(-1)
    }
    // バケットの名前を指定します。例: examplebucket。
    bucketName := "examplebucket"

    // 静的 Web サイトのデフォルトホームページを index.html に、デフォルト 404 ページを error.html に設定します。
    err = client.SetBucketWebsite(bucketName, "index.html", "error.html")
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}            
using Aliyun.OSS;
using Aliyun.OSS.Common;

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメータを変更します。
var conf = new ClientConfiguration();

// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;

// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // バケットでホストされている静的 Web サイトのデフォルトホームページを index.html に、デフォルト 404 ページを error.html に設定します。
    var request = new SetBucketWebsiteRequest(bucketName, "index.html", "error.html");
    client.SetBucketWebsite(request);
    Console.WriteLine("Set bucket:{0} Wetbsite succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS にアクセスするために使用するアカウントに関する情報を初期化します。*/

    /* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケットの名前を指定します。例: examplebucket。*/
    std::string BucketName = "examplebucket";

    /* ネットワークリソースなどのリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* 静的 Web サイトホスティングを構成します。*/
    SetBucketWebsiteRequest request(BucketName);
    /* バケットでホストされている静的 Web サイトのデフォルトホームページを index.html に設定します。*/
    request.setIndexDocument("index.html");
    /* バケットでホストされている静的 Web サイトのデフォルト 404 ページを error.html に設定します。*/
    request.setErrorDocument("error.html");

    auto outcome = client.SetBucketWebsite(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。*/
        std::cout << "SetBucketWebsite fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

ossutil を使用する

ossutil を使用して静的 Web サイトホスティングを構成できます。インストールについては、「ossutil のインストール」をご参照ください。

以下は、examplebucket の静的 Web サイトホスティングを構成するためのサンプルコマンドです。

ossutil api put-bucket-website --bucket examplebucket --website-configuration "{\"IndexDocument\":{\"Suffix\":\"index.html\",\"SupportSubDir\":\"true\",\"Type\":\"0\"},\"ErrorDocument\":{\"Key\":\"error.html\",\"HttpStatus\":\"404\"},\"RoutingRules\":{\"RoutingRule\":[{\"RuleNumber\":\"1\",\"Condition\":{\"KeyPrefixEquals\":\"abc/\",\"HttpErrorCodeReturnedEquals\":\"404\"},\"Redirect\":{\"RedirectType\":\"Mirror\",\"PassQueryString\":\"true\",\"MirrorURL\":\"http://example.com/\",\"MirrorPassQueryString\":\"true\",\"MirrorFollowRedirect\":\"true\",\"MirrorCheckMd5\":\"false\",\"MirrorHeaders\":{\"PassAll\":\"true\",\"Pass\":[\"myheader-key1\",\"myheader-key2\"],\"Remove\":[\"myheader-key3\",\"myheader-key4\"],\"Set\":{\"Key\":\"myheader-key5\",\"Value\":\"myheader-value5\"}}}},{\"RuleNumber\":\"2\",\"Condition\":{\"KeyPrefixEquals\":\"abc/\",\"HttpErrorCodeReturnedEquals\":\"404\",\"IncludeHeader\":{\"Key\":\"host\",\"Equals\":\"test.oss-cn-beijing-internal.aliyuncs.com\"}},\"Redirect\":{\"RedirectType\":\"AliCDN\",\"Protocol\":\"http\",\"HostName\":\"example.com\",\"PassQueryString\":\"false\",\"ReplaceKeyWith\":\"prefix/${key}.suffix\",\"HttpRedirectCode\":\"301\"}},{\"Condition\":{\"HttpErrorCodeReturnedEquals\":\"404\"},\"RuleNumber\":\"3\",\"Redirect\":{\"ReplaceKeyWith\":\"prefix/${key}\",\"HttpRedirectCode\":\"302\",\"EnableReplacePrefix\":\"false\",\"PassQueryString\":\"false\",\"Protocol\":\"http\",\"HostName\":\"example.com\",\"RedirectType\":\"External\"}}]}}"

このコマンドの詳細については、「put-bucket-website」をご参照ください。

関連 API 操作

上記で説明したメソッドは、基本的に RESTful API に基づいて実装されています。ビジネスで高度なカスタマイズが必要な場合は、RESTful API を直接呼び出すことができます。 API を直接呼び出すには、コードに署名計算を含める必要があります。詳細については、「PutBucketWebsite」をご参照ください。

よくある質問

バケットに対して有効にした静的 Web サイトホスティング機能を無効にすることはできますか?

静的 Web サイトホスティングの構成を使用する必要がなくなった場合は、次の手順を実行して静的 Web サイトホスティング機能を無効にします。

  1. 左側のナビゲーションツリーで、[データ管理] > [静的ページ] を選択します。

  2. [静的ページ] セクションで、[設定] をクリックします。

  3. [デフォルトホームページ] パラメータと [デフォルト 404 ページ] パラメータの構成を削除し、[保存] をクリックします。

    次のページが表示された場合、静的 Web サイトホスティング機能は無効になっています。Disable static website hosting

参考資料