You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
管理桶配置
管理静态网站(Java SDK)
复制全文
下载 pdf
管理静态网站(Java SDK)

TOS 支持托管静态网站,您可以将静态网站的所有内容存储至 TOS 存储桶,配置静态网站规则后,即可通过存储桶域名访问该网站。

设置网站配置规则

您可以通过 TOS Java SDK 的 putBucketWebsite 接口设置指定桶的网站配置规则。

注意

  • 一个存储桶中只能创建一条静态网站托管规则。
  • 设置静态网站后,必须绑定自定义域名才能生效,具体操作,请参见绑定自定义域名
  • 出于安全合规考虑,从 2022年10月18日开始,如果您使用存储桶的默认域名访问网页类型文件(mimetype为text/html,扩展名包括 HTM、HTML、JSP、PLG、HTX、STM),Response Header中会自动加上 Content-Disposition:attachment,即从浏览器访问网页类型文件时,将不会直接预览网站,而会将网站的内容下载到本地。

示例代码

以下代码展示两种场景,如何设置重定向所有的请求到另外一个站点,以及如何设置特定的重定向规则来重定向特定的请求。

import com.volcengine.tos.TOSV2;
import com.volcengine.tos.TOSV2ClientBuilder;
import com.volcengine.tos.TosClientException;
import com.volcengine.tos.TosServerException;
import com.volcengine.tos.comm.common.ProtocolType;
import com.volcengine.tos.model.bucket.*;

import java.util.ArrayList;
import java.util.List;

public class PutBucketWebsiteExample {
    public static void main(String[] args) {
        String endpoint = "your endpoint";
        String region = "your region";
        String accessKey = System.getenv("TOS_ACCESS_KEY");
        String secretKey = System.getenv("TOS_SECRET_KEY"); 

        String bucketName = "bucket-example";

        TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey);

        try{
            // 场景1 重定向所有的请求到另一个站点
            RedirectAllRequestsTo redirectAllRequestsTo = new RedirectAllRequestsTo().setHostname("www.example.com").setProtocol("http");
            PutBucketWebsiteInput input = new PutBucketWebsiteInput().setBucket(bucketName)
                    .setRedirectAllRequestsTo(redirectAllRequestsTo);
            PutBucketWebsiteOutput output = tos.putBucketWebsite(input);
            System.out.println("putBucketWebsite succeed");

            // 场景2 根据规则重定向请求
            // RoutingRule 设置前缀匹配,获取重定向结果
            RoutingRule rule = new RoutingRule()
                    // 重定向规则的条件配置
                    .setCondition(new RoutingRuleCondition()
                            // 指定重定向规则的对象键前缀匹配条件
                            .setKeyPrefixEquals("prefix")
                            // 指定重定向规则的错误码匹配条件
                            .setHttpErrorCodeReturnedEquals(404))
                    // 重定向规则的具体重定向目标配置
                    .setRedirect(new RoutingRuleRedirect()
                            // 指定重定向规则的目标协议
                            .setProtocol(ProtocolType.PROTOCOL_HTTP)
                            // 指定重定向的目的地址
                            .setHostname("www.redirect.com"));
            List<RoutingRule> rules = new ArrayList<>();
            rules.add(rule);
            IndexDocument indexDocument = new IndexDocument().setSuffix("index.html").setForbiddenSubDir(true);
            ErrorDocument errorDocument = new ErrorDocument().setKey("error.html");
            input = new PutBucketWebsiteInput().setBucket(bucketName)
                    .setRoutingRules(rules)
                    .setIndexDocument(indexDocument)
                    .setErrorDocument(errorDocument);
            output = tos.putBucketWebsite(input);
            System.out.println("putBucketWebsite succeed");
        } catch (TosClientException e) {
            // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送
            System.out.println("putBucketWebsite failed");
            System.out.println("Message: " + e.getMessage());
            if (e.getCause() != null) {
                e.getCause().printStackTrace();
            }
        } catch (TosServerException e) {
            // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息
            System.out.println("putBucketWebsite failed");
            System.out.println("StatusCode: " + e.getStatusCode());
            System.out.println("Code: " + e.getCode());
            System.out.println("Message: " + e.getMessage());
            System.out.println("RequestID: " + e.getRequestID());
        } catch (Throwable t) {
            // 作为兜底捕获其他异常,一般不会执行到这里
            System.out.println("putBucketWebsite failed");
            System.out.println("unexpected exception, message: " + t.getMessage());
        }
    }
}

获取网站配置规则

您可以通过 TOS Java SDK 的 getBucketWebsite 接口获取指定桶的网站配置规则。

注意

要获取桶的网站配置规则,默认您必须为桶所有者。

示例代码

以下代码展示如何获取桶的网站配置规则。

import com.volcengine.tos.TOSV2;
import com.volcengine.tos.TOSV2ClientBuilder;
import com.volcengine.tos.TosClientException;
import com.volcengine.tos.TosServerException;
import com.volcengine.tos.model.bucket.*;

public class GetBucketWebsiteExample {
    public static void main(String[] args) {
        String endpoint = "your endpoint";
        String region = "your region";
        String accessKey = System.getenv("TOS_ACCESS_KEY");
        String secretKey = System.getenv("TOS_SECRET_KEY"); 

        String bucketName = "bucket-example";

        TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey);

        try{
            GetBucketWebsiteInput input = new GetBucketWebsiteInput().setBucket(bucketName);
            GetBucketWebsiteOutput output = tos.getBucketWebsite(input);
            System.out.println("getBucketWebsite succeed");
            if (output.getRedirectAllRequestsTo() != null) {
                System.out.println("getBucketWebsite RedirectAllRequestsTo HostName:" + output.getRedirectAllRequestsTo().getHostname());
                System.out.println("getBucketWebsite RedirectAllRequestsTo Protocol:" + output.getRedirectAllRequestsTo().getProtocol());
            }
            if (output.getIndexDocument() != null) {
                System.out.println("getBucketWebsite IndexDocument ForbiddenSubDir:" + output.getIndexDocument().isForbiddenSubDir());
                System.out.println("getBucketWebsite IndexDocument Suffix:" + output.getIndexDocument().getSuffix());
            }
            if (output.getErrorDocument() != null) {
                System.out.println("getBucketWebsite ErrorDocument Key:" + output.getErrorDocument().getKey());
            }
            if (output.getRoutingRules() != null && output.getRoutingRules().size() > 0) {
                for(int i = 0; i < output.getRoutingRules().size(); i++) {
                    RoutingRule rule = output.getRoutingRules().get(i);
                    System.out.println("No." + i + " rule");
                    if (rule.getCondition() != null) {
                        System.out.println("getBucketWebsite RoutingRules Rule Condition HttpErrorCodeReturnedEquals:" + rule.getCondition().getHttpErrorCodeReturnedEquals());
                        System.out.println("getBucketWebsite RoutingRules Rule Condition KeyPrefixEquals:" + rule.getCondition().getKeyPrefixEquals());
                    }
                    if (rule.getRedirect() != null) {
                        System.out.println("getBucketWebsite RoutingRules Rule Redirect HostName:" + rule.getRedirect().getHostname());
                        System.out.println("getBucketWebsite RoutingRules Rule Redirect Protocol:" + rule.getRedirect().getProtocol());
                        System.out.println("getBucketWebsite RoutingRules Rule Redirect ReplaceKeyWith:" + rule.getRedirect().getReplaceKeyWith());
                        System.out.println("getBucketWebsite RoutingRules Rule Redirect ReplaceKeyPrefixWith:" + rule.getRedirect().getReplaceKeyPrefixWith());
                        System.out.println("getBucketWebsite RoutingRules Rule Redirect HttpRedirectCode:" + rule.getRedirect().getHttpRedirectCode());
                    }
                }
            }
        } catch (TosClientException e) {
            // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送
            System.out.println("getBucketWebsite failed");
            System.out.println("Message: " + e.getMessage());
            if (e.getCause() != null) {
                e.getCause().printStackTrace();
            }
        } catch (TosServerException e) {
            // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息
            System.out.println("getBucketWebsite failed");
            System.out.println("StatusCode: " + e.getStatusCode());
            System.out.println("Code: " + e.getCode());
            System.out.println("Message: " + e.getMessage());
            System.out.println("RequestID: " + e.getRequestID());
        } catch (Throwable t) {
            // 作为兜底捕获其他异常,一般不会执行到这里
            System.out.println("getBucketWebsite failed");
            System.out.println("unexpected exception, message: " + t.getMessage());
        }
    }
}

删除网站配置规则

您可以通过 TOS Java SDK 的 deleteBucketWebsite 接口删除指定桶的网站配置规则。

注意

要删除桶的网站配置规则,默认您必须为桶所有者。

示例代码

以下代码展示如何删除桶的网站配置规则。

import com.volcengine.tos.TOSV2;
import com.volcengine.tos.TOSV2ClientBuilder;
import com.volcengine.tos.TosClientException;
import com.volcengine.tos.TosServerException;
import com.volcengine.tos.model.bucket.DeleteBucketWebsiteInput;
import com.volcengine.tos.model.bucket.DeleteBucketWebsiteOutput;

public class DeleteBucketWebsiteExample {
    public static void main(String[] args) {
        String endpoint = "your endpoint";
        String region = "your region";
        String accessKey = System.getenv("TOS_ACCESS_KEY");
        String secretKey = System.getenv("TOS_SECRET_KEY"); 
        String bucketName = "bucket-example";

        TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey);

        try{
            DeleteBucketWebsiteInput input = new DeleteBucketWebsiteInput().setBucket(bucketName);
            DeleteBucketWebsiteOutput output = tos.deleteBucketWebsite(input);
            System.out.println("deleteBucketWebsite succeed, " + output);
        } catch (TosClientException e) {
            // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送
            System.out.println("deleteBucketWebsite failed");
            System.out.println("Message: " + e.getMessage());
            if (e.getCause() != null) {
                e.getCause().printStackTrace();
            }
        } catch (TosServerException e) {
            // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息
            System.out.println("deleteBucketWebsite failed");
            System.out.println("StatusCode: " + e.getStatusCode());
            System.out.println("Code: " + e.getCode());
            System.out.println("Message: " + e.getMessage());
            System.out.println("RequestID: " + e.getRequestID());
        } catch (Throwable t) {
            // 作为兜底捕获其他异常,一般不会执行到这里
            System.out.println("deleteBucketWebsite failed");
            System.out.println("unexpected exception, message: " + t.getMessage());
        }
    }
}

相关文档

关于设置静态网站配置的更多信息,请参见设置静态网站

最近更新时间:2024.02.04 18:31:05
这个页面对您有帮助吗?
有用
有用
无用
无用