靜態(tài)網(wǎng)站托管
靜態(tài)網(wǎng)站是指所有的網(wǎng)頁(yè)都由靜態(tài)內(nèi)容構(gòu)成,包括客戶端執(zhí)行的腳本(例如JavaScript)。您可以通過靜態(tài)網(wǎng)站托管功能將您的靜態(tài)網(wǎng)站托管到OSS的存儲(chǔ)空間(Bucket),并使用Bucket的訪問域名訪問這個(gè)網(wǎng)站。
使用說明
配置靜態(tài)網(wǎng)站托管時(shí),您需要指定網(wǎng)站的默認(rèn)首頁(yè)和默認(rèn)404頁(yè):
默認(rèn)首頁(yè)是您通過瀏覽器訪問靜態(tài)網(wǎng)站域名時(shí),OSS返回的網(wǎng)站首頁(yè)。
您為默認(rèn)首頁(yè)指定的文件必須是Bucket根目錄下允許被匿名訪問的文件。如果您還開通了子目錄首頁(yè),則子目錄下也應(yīng)存在此文件。
默認(rèn)404頁(yè)是您通過瀏覽器訪問Bucket內(nèi)文件出現(xiàn)404錯(cuò)誤時(shí),OSS返回的錯(cuò)誤頁(yè)面。
您為默認(rèn)404頁(yè)指定的文件必須是Bucket根目錄下允許被匿名訪問的文件。
您可以通過將默認(rèn)首頁(yè)或者默認(rèn)404頁(yè)中指定文件的讀寫權(quán)限ACL設(shè)置為public-read
,確保該文件允許匿名訪問。有關(guān)設(shè)置文件讀寫權(quán)限ACL的具體步驟,請(qǐng)參見文件ACL。
注意事項(xiàng)
出于安全考慮,中國(guó)內(nèi)地各地域自2018年09月28日起,非中國(guó)內(nèi)地各地域自2019年09月25日起,通過瀏覽器訪問OSS靜態(tài)網(wǎng)頁(yè)類型文件(mimetype為text/html,擴(kuò)展名包括HTM、HTML、JSP、PLG、HTX、STM):
使用OSS默認(rèn)域名通過瀏覽器訪問靜態(tài)網(wǎng)頁(yè)文件時(shí),Response Header中會(huì)自動(dòng)加上Content-Disposition:attachment。 即從瀏覽器訪問這些文件時(shí),會(huì)以附件形式進(jìn)行下載。
使用自定義域名通過瀏覽器訪問靜態(tài)網(wǎng)頁(yè)文件時(shí),在瀏覽器支持預(yù)覽對(duì)應(yīng)格式的網(wǎng)頁(yè)文件的情況下,默認(rèn)直接預(yù)覽文件內(nèi)容。
費(fèi)用說明
存儲(chǔ)費(fèi)用
按照存儲(chǔ)靜態(tài)網(wǎng)站文件(如HTML、CSS、JavaScript、圖片等)占用的存儲(chǔ)容量進(jìn)行收費(fèi)。更多信息,請(qǐng)參見存儲(chǔ)費(fèi)用。
流量費(fèi)用
訪問靜態(tài)網(wǎng)站產(chǎn)生的流出流量,包括默認(rèn)首頁(yè)、圖片、腳本等所有靜態(tài)資源以及返回404錯(cuò)誤頁(yè)面所產(chǎn)生的流出流量。更多信息,請(qǐng)參見流量費(fèi)用。
請(qǐng)求費(fèi)用
向OSS發(fā)送GET請(qǐng)求訪問默認(rèn)首頁(yè)、其他頁(yè)面、靜態(tài)資源以及404頁(yè)面,這些請(qǐng)求會(huì)涉及GET類請(qǐng)求費(fèi)用。更多信息,請(qǐng)參見請(qǐng)求費(fèi)用。
配置示例
為Bucket開啟靜態(tài)網(wǎng)站托管后,您需要將與默認(rèn)首頁(yè)名稱相同的文件(例如index.html)上傳至目標(biāo)Bucket,如果Bucket中包含了目錄結(jié)構(gòu)subdir/,則目錄層級(jí)下也必須包含index.html文件。此外,您還需要將與默認(rèn)404頁(yè)名稱相同的文件(例如error.html)上傳至目標(biāo)Bucket。Bucket的文件結(jié)構(gòu)如下所示:
Bucket
├── index.html
├── error.html
├── example.txt
└── subdir/
└── index.html
如果該Bucket綁定了自定義域名example.com
,且配置的靜態(tài)網(wǎng)站默認(rèn)首頁(yè)為index.html,默認(rèn)404頁(yè)為error.html。則通過自定義域名訪問靜態(tài)網(wǎng)站時(shí),根據(jù)是否開通了子目錄首頁(yè),訪問規(guī)則如下:
未開通子目錄首頁(yè)
當(dāng)您訪問https://example.com/和https://example.com/subdir/時(shí),OSS會(huì)返回https://example.com/index.html。
當(dāng)您訪問https://example.com/example.txt時(shí),正常獲取example.txt文件。
當(dāng)您訪問https://example.com/object時(shí),因object不存在,OSS會(huì)返回https://example.com/error.html。
已開通子目錄首頁(yè)
當(dāng)您訪問https://example.com/時(shí),OSS會(huì)返回https://example.com/index.html。
當(dāng)您訪問https://example.com/subdir/時(shí),OSS會(huì)返回https://example.com/subdir/index.html。
當(dāng)您訪問https://example.com/example.txt時(shí),正常獲取example.txt文件。
當(dāng)您訪問https://example.com/object時(shí),因object不存在,OSS會(huì)根據(jù)您設(shè)置的文件404規(guī)則返回對(duì)應(yīng)信息:
如果文件404規(guī)則設(shè)置為Redirect(默認(rèn)值),OSS會(huì)繼續(xù)檢查object/index.html是否存在。如果文件存在則返回302,并將訪問請(qǐng)求重定向?yàn)?span data-tag="filepath" id="codeph-3eb-6ks-gux" class="filepath">https://example.com/object/index.html;如果文件不存在則返回404,并繼續(xù)檢查https://example.com/error.html。
如果文件404規(guī)則設(shè)置為NoSuchKey,則直接返回404,并繼續(xù)檢查https://example.com/error.html。
如果文件404規(guī)則設(shè)置為Index,OSS會(huì)繼續(xù)檢查object/index.html是否存在。如果文件存在則返回200,并直接返回文件內(nèi)容。如果文件不存在,則繼續(xù)檢查https://example.com/error.html。
操作步驟
使用OSS控制臺(tái)
設(shè)置靜態(tài)網(wǎng)站頁(yè)面。
未開通子目錄首頁(yè)
結(jié)合以上配置示例可知,當(dāng)您希望訪問子目錄subdir/時(shí),不支持跳轉(zhuǎn)至子目錄下的index.html頁(yè)面,而是跳轉(zhuǎn)至根目錄下的index.html頁(yè)面。此外,當(dāng)訪問Bucket內(nèi)不存在的文件時(shí),返回默認(rèn)錯(cuò)誤頁(yè)面。具體配置步驟如下:
單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。
在左側(cè)導(dǎo)航欄,選擇
。在靜態(tài)頁(yè)面,單擊設(shè)置,按如下說明配置各項(xiàng)參數(shù)。
參數(shù)
說明
默認(rèn)首頁(yè)
默認(rèn)首頁(yè)是您通過瀏覽器訪問靜態(tài)網(wǎng)站域名時(shí),OSS返回的網(wǎng)站首頁(yè)。此處設(shè)置為index.html。
子目錄首頁(yè)
選擇不開通,此時(shí)訪問靜態(tài)網(wǎng)站根域名或者根域名下任何一個(gè)以正斜線(/)結(jié)尾的URL都會(huì)返回根目錄默認(rèn)首頁(yè)。
默認(rèn)404頁(yè)
訪問Bucket內(nèi)文件出現(xiàn)404錯(cuò)誤時(shí),OSS返回的錯(cuò)誤頁(yè)面。默認(rèn)404頁(yè)僅支持根目錄下的文件。此處設(shè)置為error.html。
錯(cuò)誤文檔響應(yīng)碼
您可以配置返回錯(cuò)誤文檔時(shí)的HTTP響應(yīng)碼為404或200。
單擊保存。
已開通子目錄首頁(yè)
結(jié)合以上配置示例可知,您希望訪問子目錄subdir/時(shí),支持直接跳轉(zhuǎn)至子目錄下的index.html頁(yè)面。此外,當(dāng)訪問Bucket內(nèi)不存在的文件時(shí),返回默認(rèn)錯(cuò)誤頁(yè)面,并通過文件404規(guī)則指定訪問不存在文件時(shí)的返回結(jié)果。具體配置步驟如下:
在靜態(tài)頁(yè)面,單擊設(shè)置,按如下說明配置各項(xiàng)參數(shù)。
參數(shù)
說明
默認(rèn)首頁(yè)
默認(rèn)首頁(yè)是您通過瀏覽器訪問靜態(tài)網(wǎng)站域名時(shí),OSS返回的網(wǎng)站首頁(yè)。此處設(shè)置為index.html。
子目錄首頁(yè)
選擇開通。開通子目錄首頁(yè)后,訪問靜態(tài)網(wǎng)站根域名時(shí),返回根目錄默認(rèn)首頁(yè)。訪問根域名下以正斜線(/)結(jié)尾的URL時(shí)會(huì)返回對(duì)應(yīng)目錄的默認(rèn)首頁(yè)。例如,訪問示例中的
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/subdir/
時(shí),則返回subdir/目錄下的默認(rèn)首頁(yè)文件index.html
。文件404規(guī)則
開通子目錄首頁(yè)后,通過文件404規(guī)則決定訪問不存在的Object時(shí)的返回結(jié)果。例如,訪問
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir
,因示例中不存在exampledir文件,則根據(jù)設(shè)置的文件404規(guī)則返回對(duì)應(yīng)信息:Redirect(默認(rèn)值):檢查exampledir/index.html是否存在。
如果文件存在則返回302,并將訪問請(qǐng)求重定向?yàn)?span data-tag="ph" id="codeph-aqp-me9-3dv" class="ph">
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir/index.html
。如果文件不存在則返回404,并繼續(xù)檢查
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html
。如果error.html頁(yè)面也不存在該文件,則返回404狀態(tài)碼。
NoSuchKey:直接返回404,并繼續(xù)檢查
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html
。Index:檢查exampledir/index.html是否存在。
如果文件存在則返回200,并直接返回文件內(nèi)容。
如果文件不存在,則繼續(xù)檢查
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/error.html
。
默認(rèn)404頁(yè)
訪問Bucket內(nèi)文件出現(xiàn)404錯(cuò)誤時(shí),OSS返回的錯(cuò)誤頁(yè)面。默認(rèn)404頁(yè)僅支持根目錄下的文件。此處設(shè)置為error.html。
錯(cuò)誤文檔響應(yīng)碼
您可以配置返回錯(cuò)誤文檔時(shí)的HTTP響應(yīng)碼為404或200。
單擊保存。
創(chuàng)建并上傳默認(rèn)首頁(yè)。
當(dāng)您為examplebucket配置靜態(tài)網(wǎng)站托管時(shí)指定的默認(rèn)首頁(yè)為index.html,您需要將與默認(rèn)首頁(yè)名稱相同的文件上傳至examplebucket根目錄下。由于examplebucket中包含了子目錄subdir/,則子目錄subdir/下也必須包含index.html文件。
創(chuàng)建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>
將index.html文件保存至本地路徑。
分別將index.html文件上傳至examplebucket根目錄以及子目錄subdir下。上傳文件時(shí),您需要將文件讀寫權(quán)限設(shè)置為公共讀。
關(guān)于上傳文件的具體操作,請(qǐng)參見簡(jiǎn)單上傳。
創(chuàng)建并上傳默認(rèn)404頁(yè)。
當(dāng)您為examplebucket配置靜態(tài)網(wǎng)站托管時(shí)指定的默認(rèn)404頁(yè)為error.html,您需要將與默認(rèn)404頁(yè)名稱相同的文件上傳至examplebucket根目錄下。
創(chuàng)建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>
將error.html文件保存至本地。
將error.html文件上傳至examplebucket根目錄下。上傳文件時(shí),您需要將文件讀寫權(quán)限設(shè)置為公共讀。
使用阿里云SDK
以下僅列舉常見SDK的設(shè)置靜態(tài)網(wǎng)站托管的代碼示例。關(guān)于其他SDK的設(shè)置靜態(tài)網(wǎng)站托管的代碼示例,請(qǐng)參見SDK簡(jiǎn)介。
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 {
// Endpoint以華東1(杭州)為例,其它Region請(qǐng)按實(shí)際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 填寫B(tài)ucket名稱,例如examplebucket。
String bucketName = "examplebucket";
// 填寫B(tài)ucket所在地域。以華東1(杭州)為例,Region填寫為cn-hangzhou。
String region = "cn-hangzhou";
// 創(chuàng)建OSSClient實(shí)例。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// 填寫B(tài)ucket名稱。
SetBucketWebsiteRequest request = new SetBucketWebsiteRequest(bucketName);
// 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)主頁(yè)。
request.setIndexDocument("index.html");
// 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)404頁(yè)。
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;
// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$provider = new EnvironmentVariableCredentialsProvider();
// Endpoint以華東1(杭州)為例,其它Region請(qǐng)按實(shí)際情況填寫。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 填寫B(tài)ucket名稱,例如examplebucket。
$bucket= "examplebucket";
// 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)主頁(yè)為index.html,默認(rèn)404頁(yè)為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
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 開啟靜態(tài)網(wǎng)站托管模式,并將默認(rèn)首頁(yè)設(shè)置為index.html,默認(rèn)404頁(yè)設(shè)置為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() {
// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 創(chuàng)建OSSClient實(shí)例。
// yourEndpoint填寫B(tài)ucket對(duì)應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請(qǐng)按實(shí)際情況填寫。
// yourRegion填寫B(tài)ucket所在地域,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請(qǐng)按實(shí)際情況填寫。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 設(shè)置簽名版本
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填寫B(tài)ucket名稱,例如examplebucket。
bucketName := "examplebucket"
// 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)主頁(yè)為index.html, 默認(rèn)404頁(yè)為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;
// yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填寫B(tài)ucket名稱。
var bucketName = "examplebucket";
// 填寫B(tài)ucket所在地域?qū)?yīng)的Region。以華東1(杭州)為例,Region填寫為cn-hangzhou。
const string region = "cn-hangzhou";
// 創(chuàng)建ClientConfiguration實(shí)例,按照您的需要修改默認(rèn)參數(shù)。
var conf = new ClientConfiguration();
// 設(shè)置v4簽名。
conf.SignatureVersion = SignatureVersion.V4;
// 創(chuàng)建OssClient實(shí)例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
c.SetRegion(region);
try
{
// 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)主頁(yè)為index.html,默認(rèn)404頁(yè)為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賬號(hào)信息。*/
/* yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/* yourRegion填寫B(tài)ucket所在地域?qū)?yīng)的Region。以華東1(杭州)為例,Region填寫為cn-hangzhou。*/
std::string Region = "yourRegion";
/* 填寫B(tài)ucket名稱,例如examplebucket。*/
std::string BucketName = "examplebucket";
/* 初始化網(wǎng)絡(luò)等資源。*/
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* 設(shè)置靜態(tài)網(wǎng)站托管。*/
SetBucketWebsiteRequest request(BucketName);
/* 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)主頁(yè)為index.html。*/
request.setIndexDocument("index.html");
/* 設(shè)置靜態(tài)網(wǎng)站托管的默認(rèn)404頁(yè)為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;
}
/* 釋放網(wǎng)絡(luò)等資源。*/
ShutdownSdk();
return 0;
}
使用REST API
如果您的程序自定義要求較高,您可以直接發(fā)起REST API請(qǐng)求。直接發(fā)起REST API請(qǐng)求需要手動(dòng)編寫代碼計(jì)算簽名。更多信息,請(qǐng)參見PutBucketWebsite。
常見問題
開啟靜態(tài)網(wǎng)站托管功能后是否支持關(guān)閉?
更多參考
您可以通過存儲(chǔ)空間(Bucket)托管靜態(tài)網(wǎng)站,并讓訪問者通過Bucket綁定的自定義域名(例如example.com)訪問您的網(wǎng)站。具體操作,請(qǐng)參見使用自定義域名設(shè)置靜態(tài)網(wǎng)站托管。
您可以使用React框架,通過OSS的靜態(tài)網(wǎng)站托管功能在前端快速部署一個(gè)線上可用的單頁(yè)應(yīng)用SPA(Single-Page Application)。具體操作,請(qǐng)參見教程示例:通過靜態(tài)網(wǎng)站托管部署單頁(yè)應(yīng)用。