静态网站托管

更新时间: 2023-05-09

目录

设置静态网站托管

查看静态网站托管

删除静态网站托管

您可以将静态网站文件上传至OSS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OSS上托管静态网站的目的。第三方用户在访问您网站的时候,实际上是在访问OSS的桶中的对象。在使用静态网站托管功能时,OSS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。

静态网站托管的设置方法是setBucketWebSite(SetBucketWebsiteRequest setBucketWebsiteRequest),SetBucketWebsiteRequest参数的属性说明如下:

属性 描述
IndexDocument indexDocument 内部包含String类型的indexDocument等属性,用于设置首页对象名,仅支持桶目录下html格式的文件
ErrorDocument errorDocument 内部包含String类型的参数protocolString,用来设置为404error页的对象名,仅支持html、jpg、png、bmp、webp格式的文件
String bucketName 设置静态网站托管的存储桶名字
String hostName 重定向请求生效时使用的主机名。如不设置,代表重定向至原请求的hostName
Protocol protocol 内部包含String类型的参数protocolString,用来指定重定向协议
List routingRules RoutingRule包含number、Condition和Redirect属性,路由规则列表
Integer number; 规则数量
Condition condition Condition包含keyPrefixEquals和httpErrorCodeReturnedEquals,用来指定状态匹配规则
String keyPrefixEquals 指定请求对象的前缀匹配规则
Integer httpErrorCodeReturnedEquals 指定请求异常错误码匹配规则
Redirect redirect 内部包含Protocol、httpRedirectCode、replaceKeyWith和replaceKeyPrefixWith等,用来指定重定向规则
Integer httpRedirectCode 指定重定向状态码
String replaceKeyWith 对象替换规则,与replaceKeyPrefixWith只能同时存在一个
String replaceKeyPrefixWith 前缀替换规则,与replaceKeyWith只能同时存在一个

设置静态网站托管

使用以下代码设置静态网站托管:

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String userId = "<yourUserId>";

// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

// 填写Bucket名称。
SetBucketWebsiteRequest websiteRequest = new SetBucketWebsiteRequest(bucketName);
// 设置静态网站托管的默认主页。
IndexDocument indexDocument = new IndexDocument();
indexDocument.setIndexDocument("index.html");
websiteRequest.setIndexDocument(indexDocument);
// 设置静态网站托管的默认404页。
ErrorDocument errorDocument = new ErrorDocument();
errorDocument.setErrorDocument("error.html");
websiteRequest.setErrorDocument(errorDocument);
// 设置静态网站托管的重定向规则
List<RoutingRule> routingRules = new ArrayList<>();
RoutingRule routingRule = new RoutingRule();
Condition condition = new Condition();
condition.setHttpErrorCodeReturnedEquals(404);
condition.setKeyPrefixEquals("test1/");
routingRule.setCondition(condition);
Redirect redirect = new Redirect();
redirect.setProtocol(Protocol.HTTP);
redirect.setReplaceKeyWith("test2/");
redirect.setHttpRedirectCode(301);
routingRule.setRedirect(redirect);
routingRules.add(routingRule);
websiteRequest.setRoutingRules(routingRules);

ossClient.setBucketWebSite(websiteRequest);

查看静态网站托管

使用以下代码查看静态网站托管:

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String userId = "<yourUserId>";

// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

// 查看静态网站托管
BucketWebSiteResult website = ossClient.getBucketWebSite(bucketName);
System.out.println("index document: " + website.getIndexDocument());
System.out.println("error document: " + website.getIndexDocument());
System.out.println("hostName is: " + website.getHostName());
System.out.println("protocol is: " + website.getProtocol());
website.getRoutingRules().forEach(routingRule -> {
    System.out.println("routingRule httpErrorCodeReturn condition: " + (routingRule.getCondition() == null ? null : routingRule.getCondition().getHttpErrorCodeReturnedEquals()));
    System.out.println("routingRule keyPrefix condition: " + (routingRule.getCondition() == null ? null : routingRule.getCondition().getKeyPrefixEquals()));
    System.out.println("routingRule redirect hostName: " + (routingRule.getRedirect() == null ? null : routingRule.getRedirect().getHostName()));
    System.out.println("routingRule redirect replaceKeyPrefix: " + (routingRule.getRedirect() == null ? null : routingRule.getRedirect().getReplaceKeyPrefixWith()));
    System.out.println("routingRule redirect replaceKeyWith: " + (routingRule.getRedirect() == null ? null : routingRule.getRedirect().getReplaceKeyWith()));
    System.out.println("routingRule redirect protocol: " + (routingRule.getRedirect() == null ? null : routingRule.getRedirect().getProtocol()));
    System.out.println("routingRule redirect httpRedirectCode: " + (routingRule.getRedirect() == null ? null : routingRule.getRedirect().getHttpRedirectCode()));
        });

删除静态网站托管

使用以下代码删除静态网站托管:

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String userId = "<yourUserId>";

// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

// 删除静态网站托管
ossClient.deleteBucketWebSite(bucketName);