Tous les produits
Search
Centre de documentation

Object Storage Service:PutBucketWebsite

Dernière mise à jour :Aug 08, 2026

L'opération PutBucketWebsite configure un bucket pour l'hébergement de sites web statiques et définit des règles de redirection (RoutingRule).

Notes d'utilisation

Les sites web statiques se composent de contenu statique, y compris des scripts côté client tels que JavaScript. OSS ne prend pas en charge le traitement côté serveur tel que PHP, JSP ou ASP.NET.

  • L'opération PutBucketWebsite nécessite l'autorisation oss:PutBucketWebsite. Accorder une stratégie d'accès personnalisée à un utilisateur RAM.

  • Fonctionnalités

    Configure la page d'accueil par défaut, la page d'erreur 404 par défaut et les règles de redirection (RoutingRule). Les règles de redirection prennent en charge les redirections 3xx et le retour à la source par miroir.

  • Accéder aux sites web statiques à l'aide de noms de domaine personnalisés

    Pour accéder à un site web statique via un nom de domaine personnalisé, ajoutez un enregistrement CNAME. Lier un nom de domaine personnalisé.

  • Pages d'index et pages d'erreur

    Spécifiez une page d'index et une page d'erreur. Ces deux éléments doivent être des objets présents dans le bucket.

  • Accès anonyme au domaine racine

    Une fois l'hébergement de site web statique configuré, OSS renvoie la page d'index pour les requêtes anonymes adressées au domaine racine. Les requêtes signées vers le domaine racine renvoient le résultat de l'opération GetBucket (ListObjects).

Syntaxe de la requête

PUT /?website HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
    <IndexDocument>
        <Suffix>index.html</Suffix>
    </IndexDocument>
    <ErrorDocument>
        <Key>errorDocument.html</Key>
        <HttpStatus>404</HttpStatus>
    </ErrorDocument>
</WebsiteConfiguration>

En-têtes de requête

DescribeRegions utilise uniquement les en-têtes de requête communs. Pour plus d'informations, consultez En-têtes de requête communs.

Paramètres de requête

  • Contenu de WebsiteConfiguration

    Nom

    Type

    Obligatoire

    Description

    WebsiteConfiguration

    Conteneur

    Oui

    Nœud racine.

    Nœud parent : Aucun

  • Contenu de IndexDocument

    Nom

    Type

    Obligatoire

    Description

    IndexDocument

    Conteneur

    Conditionnel

    Spécifiez au moins l'un des conteneurs suivants : IndexDocument, ErrorDocument et RoutingRules.

    Conteneur pour la page d'accueil par défaut.

    Nœud parent : WebsiteConfiguration

    Suffix

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent IndexDocument.

    Page d'accueil par défaut.

    OSS renvoie cette page pour les requêtes dont l'URL se termine par une barre oblique (/).

    Nœud parent : IndexDocument

    SupportSubDir

    Chaîne

    Non

    Indique s'il faut rediriger les requêtes vers un sous-répertoire vers la page d'index de ce sous-répertoire. Valeurs valides :

    • true : Redirige les requêtes vers la page d'index du sous-répertoire.

    • false (par défaut) : Ne redirige pas les requêtes vers la page d'index du sous-répertoire. Les requêtes sont plutôt redirigées vers la page d'index du répertoire racine.

    Par exemple, si la page d'accueil par défaut est index.html et qu'une requête est envoyée à bucket.oss-cn-hangzhou.aliyuncs.com/subdir/, la définition de SupportSubDir sur false redirige la requête vers bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Si vous définissez SupportSubDir sur true, la requête est redirigée vers bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

    Nœud parent : IndexDocument

    Type

    Énumération

    Non

    Opération à effectuer lorsque la page d'accueil par défaut est définie, que le nom de l'objet accédé ne se termine pas par une barre oblique (/) et que l'objet n'existe pas. Cette opération prend effet uniquement lorsque SupportSubDir est défini sur true et s'applique après RoutingRule et avant ErrorFile.

    Par exemple, si la page d'accueil par défaut est index.html, qu'une requête est envoyée pour le chemin d'accès au fichier bucket.oss-cn-hangzhou.aliyuncs.com/abc et que l'objet abc n'existe pas, les actions pour les différentes valeurs de Type sont les suivantes :

    • 0 (par défaut) : Vérifie si abc/index.html existe. Le chemin est au format Objet + / + Page d'accueil. Si l'objet existe, OSS renvoie une redirection 302 vers le chemin encodé URL /abc/. Le chemin est au format / + Objet + /. Si l'objet n'existe pas, OSS renvoie une erreur 404 puis vérifie la présence d'une page d'erreur.

    • 1 : Renvoie une erreur 404 avec le code d'erreur NoSuchKey, puis vérifie la présence d'une page d'erreur.

    • 2 : Vérifie si abc/index.html existe. Si l'objet existe, son contenu est renvoyé. Si l'objet n'existe pas, OSS renvoie une erreur 404 puis vérifie la présence d'une page d'erreur.

    Nœud parent : IndexDocument

  • Contenu du document d'erreur

    Nom

    Type

    Obligatoire

    Description

    ErrorDocument

    Conteneur

    Conditionnel

    Spécifiez au moins l'un des conteneurs suivants : IndexDocument, ErrorDocument et RoutingRules.

    Conteneur pour la page d'erreur 404.

    Nœud parent : WebsiteConfiguration

    Key

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent ErrorDocument.

    Page d'erreur.

    Renvoyée lorsqu'un objet demandé n'existe pas.

    Nœud parent : ErrorDocument

    HttpStatus

    Chaîne

    Non

    Code d'état HTTP à renvoyer avec la page d'erreur.

    Valeurs valides : 200, 404 (par défaut)

    Nœud parent : ErrorDocument

  • RoutingRules|RoutingRule|RuleNumber

    Nom

    Type

    Obligatoire

    Description

    RoutingRules

    Conteneur

    Conditionnel

    Spécifiez au moins l'un des conteneurs suivants : IndexDocument, ErrorDocument et RoutingRules.

    Conteneur pour les règles de redirection.

    Nœud parent : WebsiteConfiguration

    RoutingRule

    Conteneur

    Non

    Règle de redirection ou règle de retour à la source par miroir. Maximum : 20 règles.

    Nœud parent : RoutingRules

    RuleNumber

    Entier positif

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent RoutingRule.

    Numéro de séquence. OSS fait correspondre les règles par ordre croissant et s'arrête à la première correspondance.

    Nœud parent : RoutingRule

  • Contenu de Condition dans RoutingRule

    Nom

    Type

    Obligatoire

    Description

    Condition

    Conteneur

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent RoutingRule.

    Conditions de correspondance.

    Toutes les conditions doivent être remplies pour que la règle s'exécute.

    Nœud parent : RoutingRule

    KeyPrefixEquals

    Chaîne

    Non

    La clé de l'objet doit avoir ce préfixe pour que la règle s'applique.

    Nœud parent : Condition

    HttpErrorCodeReturnedEquals

    Code d'état HTTP

    Non

    Code d'état HTTP renvoyé pour l'objet demandé qui déclenche cette règle. Pour le retour à la source par miroir, définissez la valeur sur 404.

    Nœud parent : Condition

    IncludeHeader

    Conteneur

    Non

    La requête doit inclure l'en-tête et la valeur spécifiés pour que la règle s'applique. Vous pouvez spécifier jusqu'à 10 en-têtes.

    Nœud parent : Condition

    Key

    Chaîne

    Oui

    Cette règle s'applique uniquement si la requête contient l'en-tête spécifié et que sa valeur correspond exactement à la valeur spécifiée pour Equals.

    Nœud parent : IncludeHeader

    Equals

    Chaîne

    Non

    Valeur de l'en-tête de requête. La règle s'applique uniquement si la requête inclut l'en-tête spécifié par Key et que sa valeur correspond à cette valeur.

    Nœud parent : IncludeHeader

    KeySuffixEquals

    Chaîne

    Non

    La clé de l'objet doit avoir ce suffixe pour que la règle s'applique.

    La valeur par défaut est vide, ce qui signifie qu'aucun suffixe n'est mis en correspondance.

    Nœud parent : Condition

  • Configuration de la redirection

    Nom

    Type

    Obligatoire

    Description

    Redirect

    Conteneur

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent RoutingRule.

    Action à effectuer lorsque la règle correspond.

    Nœud parent : RoutingRule

    RedirectType

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent Redirect.

    Type de redirection. Valeurs valides :

    • Mirror : retour à la source par miroir.

    • External : redirection externe. OSS renvoie une redirection 3xx vers une autre adresse.

    • AliCDN : redirection Alibaba Cloud CDN. Ce type est utilisé pour Alibaba Cloud CDN. Contrairement à une redirection externe, OSS ajoute un en-tête supplémentaire à la requête. Après qu'Alibaba Cloud CDN a détecté cet en-tête, il redirige la requête vers l'adresse spécifiée et renvoie les données récupérées à l'utilisateur, au lieu de renvoyer une requête de redirection 3xx à l'utilisateur.

    Nœud parent : Redirect

    PassQueryString

    Booléen

    Non

    Indique s'il faut inclure la chaîne de requête de la requête d'origine dans la redirection ou la requête de retour à la source.

    Par exemple, un utilisateur envoie une requête avec la chaîne de requête ?a=b&c=d. Si vous définissez PassQueryString sur true et que la règle spécifie une redirection 302, l'en-tête Location de la réponse inclut la chaîne de requête, par exemple Location:example.com?a=b&c=d. Si la règle spécifie un retour à la source par miroir, la requête de retour à la source inclut également la chaîne de requête.

    Valeurs valides : true, false (par défaut)

    Nœud parent : Redirect

    MirrorURL

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si RedirectType est défini sur Mirror.

    Adresse du serveur d'origine pour le retour à la source par miroir. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    L'adresse doit commencer par http:// ou https:// et se terminer par une barre oblique (/). OSS ajoute le nom de l'objet à cette adresse pour créer l'URL de retour à la source.

    Par exemple, si l'objet demandé est myobject et que vous définissez ce paramètre sur http://example.com/, l'URL de retour à la source est http://example.com/myobject. Si vous définissez ce paramètre sur http://example.com/dir1/, l'URL de retour à la source est http://example.com/dir1/myobject.

    Nœud parent : Redirect

    MirrorPassQueryString

    Booléen

    Non

    Identique à PassQueryString mais avec une priorité plus élevée. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Valeur par défaut : false

    Nœud parent : Redirect

    MirrorFollowRedirect

    Booléen

    Non

    Indique s'il faut suivre les redirections 3xx du serveur d'origine. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Par exemple, le serveur d'origine renvoie une redirection 302 avec un en-tête Location.

    • Si vous définissez ce paramètre sur true, OSS envoie une nouvelle requête à l'adresse spécifiée dans l'en-tête Location.

      Un maximum de 10 redirections sont suivies. Si le nombre de redirections dépasse 10, la requête de retour à la source échoue.

    • Si vous définissez ce paramètre sur false, OSS renvoie la redirection 302 et transmet l'en-tête Location au client.

    Valeur par défaut : true

    Nœud parent : Redirect

    MirrorCheckMd5

    Booléen

    Non

    Indique s'il faut vérifier le hachage MD5 du corps de la réponse du serveur d'origine. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Lorsque MirrorCheckMd5 est défini sur true et que la réponse d'origine inclut un en-tête Content-Md5, OSS vérifie les données extraites par rapport à la valeur de l'en-tête. Les données non correspondantes ne sont pas enregistrées.

    Valeur par défaut : false

    Nœud parent : Redirect

    MirrorHeaders

    Conteneur

    Non

    En-têtes à inclure dans la requête de retour à la source. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Nœud parent : Redirect

    PassAll

    Booléen

    Non

    Indique s'il faut transmettre tous les en-têtes de requête au serveur d'origine, à l'exception des en-têtes suivants. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    • En-têtes tels que content-length, authorization2, authorization, range et date

    • En-têtes commençant par oss-, x-oss- ou x-drs-

    Valeur par défaut : false

    Nœud parent : MirrorHeaders

    Pass

    Chaîne

    Non

    En-têtes spécifiés à transmettre au serveur d'origine. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Chaque en-tête peut avoir une longueur maximale de 1 024 octets et ne peut contenir que des chiffres (0-9), des lettres (a-z, A-Z) et des traits d'union (-).

    Vous pouvez spécifier jusqu'à 10 en-têtes.

    Nœud parent : MirrorHeaders

    Remove

    Chaîne

    Non

    En-têtes spécifiés dont la transmission au serveur d'origine est interdite. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Chaque en-tête a une longueur maximale de 1 024 octets et utilise le même jeu de caractères que Pass.

    Vous pouvez spécifier jusqu'à 10 en-têtes. Ce paramètre est généralement utilisé avec PassAll.

    Nœud parent : MirrorHeaders

    Set

    Conteneur

    Non

    Définit un en-tête à inclure dans la requête de retour à la source, que la requête d'origine l'ait contenu ou non. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Vous pouvez attribuer ce conteneur à un maximum de 10 groupes.

    Nœud parent : MirrorHeaders

    Key

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent Set.

    Clé de l'en-tête à définir. La clé peut avoir une longueur maximale de 1 024 octets et ne peut contenir que des chiffres (0-9), des lettres (a-z, A-Z) et des traits d'union (-). Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Nœud parent : Set

    Value

    Chaîne

    Conditionnel

    Ce paramètre est obligatoire si vous spécifiez le nœud parent Set.

    Valeur de l'en-tête à définir. La valeur peut avoir une longueur maximale de 1 024 octets et ne peut pas contenir \r\n. Prend effet uniquement lorsque RedirectType est défini sur Mirror.

    Nœud parent : Set

    Protocol

    Chaîne

    Non

    Protocole à utiliser pour la redirection. Prend effet uniquement lorsque RedirectType est défini sur External ou AliCDN.

    Par exemple, si l'objet demandé est test, que vous définissez la destination de redirection sur example.com et que vous définissez Protocol sur https, l'en-tête Location est https://example.com/test.

    Valeurs valides : http, https.

    Nœud parent : Redirect

    HostName

    Chaîne

    Non

    Nom de domaine à utiliser pour la redirection. Le nom de domaine doit être valide.

    Par exemple, si l'objet demandé est test, que vous définissez Protocol sur https et que vous définissez HostName sur example.com, l'en-tête Location est https://example.com/test.

    Nœud parent : Redirect

    ReplaceKeyPrefixWith

    Chaîne

    Non

    Chaîne par laquelle remplacer le préfixe de la clé de l'objet lors de la redirection. Si le préfixe est vide, cette chaîne est insérée au début de la clé de l'objet.

    Remarque

    Vous pouvez spécifier ReplaceKeyWith ou ReplaceKeyPrefixWith, mais pas les deux.

    Par exemple, si l'objet demandé est abc/test.txt, que vous définissez KeyPrefixEquals sur abc/ et que vous définissez ReplaceKeyPrefixWith sur def/, l'en-tête Location est http://example.com/def/test.txt.

    Nœud parent : Redirect

    EnableReplacePrefix

    Booléen

    Non

    Si ce paramètre est défini sur true, le préfixe de l'objet est remplacé par la valeur de ReplaceKeyPrefixWith. Si ce paramètre n'est pas spécifié ou est vide, le préfixe de l'objet est tronqué.

    Remarque

    Vous ne pouvez pas définir ce paramètre sur true si le paramètre ReplaceKeyWith n'est pas vide.

    Valeur par défaut : false

    Nœud parent : Redirect

    ReplaceKeyWith

    Chaîne

    Non

    Remplace la totalité de la clé de l'objet lors de la redirection. Utilisez la variable ${key} pour faire référence à la clé d'objet d'origine.

    Par exemple, si l'objet demandé est test et que vous définissez ReplaceKeyWith sur prefix/${key}.suffix, l'en-tête Location est http://example.com/prefix/test.suffix.

    Nœud parent : Redirect

    HttpRedirectCode

    Code d'état HTTP

    Non

    Code d'état HTTP à renvoyer pour la redirection. Prend effet uniquement lorsque RedirectType est défini sur External ou AliCDN.

    Valeurs valides : 301 (par défaut), 302, 307.

    Nœud parent : Redirect

En-têtes de réponse

La réponse contient uniquement les en-têtes de réponse communs. Pour plus d'informations, consultez En-têtes de réponse communs.

Exemples

  • Exemple de requête

    PUT /?website HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 209
    Date: Thu, 17 Apr 2025 03:21:12 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    
    <?xml version="1.0" encoding="UTF-8"?>
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
          <SupportSubDir>true</SupportSubDir>
          <Type>0</Type>
      </IndexDocument>
      <ErrorDocument>
        <Key>error.html</Key>
        <HttpStatus>404</HttpStatus>
      </ErrorDocument>
    </WebsiteConfiguration>
  • Exemple de réponse

    HTTP/1.1 200 OK
    x-oss-request-id: 534B371674E88A4D8906008B
    Date: Fri, 04 May 2012 03:21:12 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • Exemple complet

    PUT /?website HTTP/1.1
    Date: Thu, 17 Apr 2025 09:03:18 GMT
    Content-Length: 2064
    Host: test.oss-cn-hangzhou-internal.aliyuncs.com
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    User-Agent: aliyun-sdk-python-test/0.4.0
    
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
        <SupportSubDir>true</SupportSubDir>
        <Type>0</Type>
      </IndexDocument>
      <ErrorDocument>
        <Key>error.html</Key>
        <HttpStatus>404</HttpStatus>
      </ErrorDocument>
      <RoutingRules>
        <RoutingRule>
          <RuleNumber>1</RuleNumber>
          <Condition>
            <KeyPrefixEquals>abc/</KeyPrefixEquals>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
          </Condition>
          <Redirect>
            <RedirectType>Mirror</RedirectType>
            <PassQueryString>true</PassQueryString>
            <MirrorURL>http://example.com/</MirrorURL>   
            <MirrorPassQueryString>true</MirrorPassQueryString>
            <MirrorFollowRedirect>true</MirrorFollowRedirect>
            <MirrorCheckMd5>false</MirrorCheckMd5>
            <MirrorHeaders>
              <PassAll>true</PassAll>
              <Pass>myheader-key1</Pass>
              <Pass>myheader-key2</Pass>
              <Remove>myheader-key3</Remove>
              <Remove>myheader-key4</Remove>
              <Set>
                <Key>myheader-key5</Key>
                <Value>myheader-value5</Value>
              </Set>
            </MirrorHeaders>
          </Redirect>
        </RoutingRule>
        <RoutingRule>
          <RuleNumber>2</RuleNumber>
          <Condition>
            <KeyPrefixEquals>abc/</KeyPrefixEquals>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
            <IncludeHeader>
              <Key>host</Key>
              <Equals>test.oss-cn-beijing-internal.aliyuncs.com</Equals>
            </IncludeHeader>
          </Condition>
          <Redirect>
            <RedirectType>AliCDN</RedirectType>
            <Protocol>http</Protocol>
            <HostName>example.com</HostName>
            <PassQueryString>false</PassQueryString>
            <ReplaceKeyWith>prefix/${key}.suffix</ReplaceKeyWith>
            <HttpRedirectCode>301</HttpRedirectCode>
          </Redirect>
        </RoutingRule>
        <RoutingRule>
          <Condition>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
          </Condition>
          <RuleNumber>3</RuleNumber>
          <Redirect>
            <ReplaceKeyWith>prefix/${key}</ReplaceKeyWith>
            <HttpRedirectCode>302</HttpRedirectCode>
            <EnableReplacePrefix>false</EnableReplacePrefix>
            <PassQueryString>false</PassQueryString>
            <Protocol>http</Protocol>
            <HostName>example.com</HostName>
            <RedirectType>External</RedirectType>
          </Redirect>
        </RoutingRule>
      </RoutingRules>
    </WebsiteConfiguration>
    
    HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Fri, 27 Jul 2018 09:03:18 GMT
    Content-Length: 0
    Connection: keep-alive
    x-oss-request-id: 5B5ADFD6ED3CC49176CBE29D
    x-oss-server-time: 47

SDK

CLI (ossutil)

Commande ossutil : put-bucket-website.

Codes d'erreur

Code d'erreur

Code d'état HTTP

Description

InvalidDigest

400

La valeur de l'en-tête Content-MD5 ne correspond pas au hachage MD5 calculé par OSS pour le corps de la requête.