(Facultatif) Configuration de la redirection de page web - Amazon Simple Storage Service

(Facultatif) Configuration de la redirection de page web

Si votre compartiment Amazon S3 est configuré pour l'hébergement de site web, vous pouvez configurer une redirection de page Web. Vous disposez des options suivantes pour configurer une redirection.

Définition d'une redirection de page dans la console Amazon S3

Vous pouvez rediriger les demandes d'un objet vers un autre objet ou une autre URL en définissant l'emplacement de redirection du site Web dans les métadonnées de l'objet. Vous configurez la redirection en ajoutant la propriété x-amz-website-redirect-location aux métadonnées d'objet. Sur la console Amazon S3, vous définissez l’emplacement de redirection de site web dans les métadonnées de l’objet. Si vous utilisez l’API Amazon S3, vous définissez x-amz-website-redirect-location. Le site web interprète alors l'objet comme une redirection 301.

Pour rediriger une demande vers un autre objet, vous définissez l'emplacement de redirection vers la clé de l'objet cible. Pour rediriger une demande vers une URL externe, vous définissez l'emplacement de redirection vers l'URL choisie. Pour plus d'informations sur les métadonnées d'objet, consultez Métadonnées d'objet définies par le système.

Quand vous définissez une redirection de page, vous pouvez garder ou supprimer le contenu de l'objet source. Par exemple, si vous avez un objet page1.html dans votre compartiment, vous pouvez rediriger toutes les demandes de cette page vers un autre objet, page2.html. Vous avez deux options:

  • Conservez le contenu de l'objet page1.html et redirigez les demandes de pages.

  • Supprimez le contenu de page1.html et chargez un objet zéro octet nommé page1.html pour remplacer l'objet existant et rediriger les demandes de pages.

Pour rediriger les demandes pour un objet

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le nom du compartiment que vous avez configuré en tant que site web statique (par exemple example.com).

  3. Dans l'onglet Présentation de votre compartiment, choisissez l'objet pour lequel vous souhaitez créer une redirection.

  4. Choisissez Properties.

  5. Choisissez Métadonnées.

  6. Choisissez + Ajouter des métadonnées.

  7. Dans Clé, choisissez Website-Redirect-Location.

  8. Dans Valeur, entrez le nom de clé de l'objet vers lequel vous souhaitez rediriger, par exemple /page2.html.

    Pour un autre objet dans le même compartiment, le préfixe / dans la valeur est requis. Vous pouvez également définir la valeur sur une URL externe, par exemple http://www.example.com.

  9. Choisissez Enregistrer.

Configuration de la redirection d'une page à partir de l'API REST

Les actions d'API Amazon S3 suivantes prennent en charge l'en-tête x-amz-website-redirect-location de la demande. Amazon S3 stocke la valeur d'en-tête dans les métadonnées de l'objet sous le nom x-amz-website-redirect-location.

Un compartiment configuré pour l'hébergement d'un site Web a un point de terminaison de site Web et un point de terminaison REST. Une demande pour une page qui est configurée comme une redirection 301 peut engendrer les résultats possibles suivants, selon le point de terminaison de la demande :

  • Point de terminaison de site web propre à la région – Amazon S3 redirige la demande de page en fonction de la valeur de la propriété x-amz-website-redirect-location.

  • Point de terminaison REST – Amazon S3 ne redirige pas la demande de page. Il renvoie l'objet demandé.

Pour plus d'informations sur les points de terminaison, consultez Différences clés entre un point de terminaison de site web et un point de terminaison de l'API REST.

Lors de la définition d'une redirection de page, vous pouvez garder ou supprimer le contenu de l'objet source. A titre d'exemple, supposez que vous ayez un objet page1.html dans votre compartiment.

  • Pour conserver le contenu de page1.html et rediriger uniquement les demandes de page, vous pouvez soumettre une demande PUT Object – Copy pour créer un objet page1.html qui utilise l'objet page1.html existant comme source. Dans votre demande, vous définissez l'en-tête x-amz-website-redirect-location. Lorsque la demande est terminée, la page d'origine et son contenu restent inchangés, cependant Amazon S3 redirige toute demande pour la page vers l'emplacement de redirection que vous avez indiqué.

  • Pour supprimer le contenu de l'objet page1.html et rediriger les demandes pour la page, vous pouvez envoyer une demande PUT Object pour charger un objet de 0 octet ayant la même clé d'objet : page1.html. Dans une demande PUT, vous définissez x-amz-website-redirect-location pour page1.htmldans le nouvel objet. Une fois que la demande est terminée, page1.html n'a aucun contenu, et les demandes sont redirigées vers l'emplacement qui est spécifié par x-amz-website-redirect-location.

Lorsque vous récupérez l'objet à l'aide de l'action GET Object, avec les autres métadonnées de l'objet, Amazon S3 renvoie l'en-tête x-amz-website-redirect-location dans la réponse.

Redirection des demandes pour le point de terminaison de site Web d'un compartiment vers un autre hôte

Vous pouvez rediriger toutes les demandes d'un point de terminaison de site Web pour un compartiment vers un autre hôte. Si vous redirigez toutes les demandes, chaque demande adressée au point de terminaison de site Web sera redirigée vers le nom d'hôte spécifié.

Par exemple, si votre domaine racine est example.com, et que vous souhaitez gérer des demandes pour http://example.com et http://www.example.com, vous pouvez créer deux compartiments nommés example.com et www.example.com. Ensuite, gérez le contenu dans le compartiment example.com et configurez l'autre compartiment www.example.com de manière à rediriger toutes les demandes vers le compartiment example.com. Pour de plus amples informations, veuillez consulter les informations relatives à la configuration d'un site Web statique à l'aide d'un nom de domaine personnalisé.

Pour rediriger des demandes pour un point de terminaison de site Web de compartiment

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le nom du compartiment que vous avez configuré en tant que site web statique (par exemple example.com).

  3. Choisissez Propriétés.

  4. Choisissez Hébergement de site Web statique.

  5. Choisissez Rediriger les demandes.

  6. Dans la zone Target bucket or domain (Compartiment ou domaine cible) entrez le compartiment ou le domaine vers lequel vous souhaitez rediriger les demandes.

    Par exemple, si vous redirigez les demandes vers une adresse de domaine racine, entrez example.com.

  7. Dans la zone Protocol (Protocole) entrez le protocole pour les demandes redirigées (http ou https).

    Si vous ne spécifiez pas de protocole, le protocole de la demande d'origine est utilisé.

  8. Choisissez Save.

Configuration des redirections conditionnelles avancées

Avec les règles de redirection avancées, vous pouvez acheminer des demandes de façon conditionnelle, en fonction de noms de clés d'objets spécifiques, de préfixes dans la demande ou de codes réponse. A titre d'exemple, supposez que vous supprimiez ou renommiez un objet dans votre compartiment. Vous pouvez ajouter une règle de routage qui redirige la demande vers un autre objet. Si vous souhaitez qu'un dossier ne soit plus accessible, vous pouvez ajouter une règle de routage pour rediriger la demande vers une autre page Web. Vous pouvez également ajouter une règle de routage pour gérer des conditions d'erreur en acheminant les demandes qui renvoient l'erreur vers un autre domaine, où celle-ci sera traitée.

Lors de la configuration d'un compartiment pour l'hébergement du site web, vous pouvez également indiquer des règles de redirection avancées. Dans Amazon S3, vous êtes limité à 50 règles de routage par configuration de site web. Si vous avez besoin de plus de 50 règles de routage, vous pouvez utiliser la redirection d'objet. Pour plus d'informations, consultez (Facultatif) Configuration de la redirection de page web.

Pour configurer des règles de redirection pour un site web statique

Pour ajouter des règles de redirection pour un compartiment qui a déjà l'hébergement de site Web statique activé, procédez comme suit.

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Compartiments, choisissez le nom d’un compartiment que vous avez configuré en tant que site web statique.

  3. Choisissez Propriétés.

  4. Choisissez Hébergement de site Web statique.

  5. Dans Règles de redirection, entrez vos règles de redirection.

    Vous décrivez les règles à l'aide du langage XML. Pour connaître la syntaxe générale et voir des exemples de spécification de règles de redirection, consultez Syntaxe pour la spécification de règles de routage. Amazon S3 a une limite de 50 règles de routage par configuration de site web. Si vous avez besoin de plus de 50 règles de routage, vous pouvez utiliser la redirection d'objet. Pour plus d’informations, consultez Définition d'une redirection de page dans la console Amazon S3.

  6. Choisissez Save.

Syntaxe pour la spécification de règles de routage

Ci-après, vous trouverez une syntaxe générale pour la définition des règles de routage dans une configuration de site web.

<RoutingRules> = <RoutingRules> <RoutingRule>...</RoutingRule> [<RoutingRule>...</RoutingRule> ...] </RoutingRules> <RoutingRule> = <RoutingRule> [ <Condition>...</Condition> ] <Redirect>...</Redirect> </RoutingRule> <Condition> = <Condition> [ <KeyPrefixEquals>...</KeyPrefixEquals> ] [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] </Condition> Note: <Condition> must have at least one child element. <Redirect> = <Redirect> [ <HostName>...</HostName> ] [ <Protocol>...</Protocol> ] [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] [ <ReplaceKeyWith>...</ReplaceKeyWith> ] [ <HttpRedirectCode>...</HttpRedirectCode> ] </Redirect> Note: <Redirect> must have at least one child element. Also, you can have either ReplaceKeyPrefix with or ReplaceKeyWith, but not both.

Le tableau suivant décrit les éléments de la règle de routage.

Nom Description
RoutingRules Conteneur de l'ensemble des éléments RoutingRule.
RoutingRule

Une règle qui identifie une condition et la redirection qui est appliquée quand la condition est respectée.

Condition :

  • un conteneur RoutingRules doit comprendre au moins une règle de routage.

Condition

Conteneur de la description de la condition qui doit être respectée pour que la redirection spécifiée soit appliquée. Si la règle de routage ne comprend pas de condition, la règle s'applique à toutes les demandes.

KeyPrefixEquals

Le préfixe de nom de la clé d'objet à partir duquel les demandes sont redirigées.

KeyPrefixEquals est requis si HttpErrorCodeReturnedEquals n'est pas spécifié. Si les deux paramètres KeyPrefixEquals et HttpErrorCodeReturnedEquals sont spécifiés, les deux doivent être vrais pour que la condition soit respectée.

HttpErrorCodeReturnedEquals

Le code d'erreur HTTP doit correspondre pour que la redirection s'applique. En cas d'erreur, et si le code d'erreur correspond à cette valeur, la redirection spécifiée est appliquée.

HttpErrorCodeReturnedEquals est requis si KeyPrefixEquals n'est pas spécifié. Si les deux paramètres KeyPrefixEquals et HttpErrorCodeReturnedEquals sont spécifiés, les deux doivent être vrais pour que la condition soit respectée.

Redirect

Elément du conteneur qui fournit des instructions pour rediriger la demande. Vous pouvez rediriger les demandes vers un autre hôte ou une autre page ; vous pouvez également indiquer un autre protocole d'utilisation. Une règle RoutingRule doit avoir un élément Redirect. Un élément Redirect doit contenir au moins l'un des éléments enfants suivants : Protocol, HostName, ReplaceKeyPrefixWith, ReplaceKeyWith ou HttpRedirectCode.

Protocol

Le protocole, http or https, à utiliser dans l'en-tête Location renvoyé dans la réponse.

Si l'un des enfants est fourni, Protocol n'est pas requis.

HostName

Le nom d'hôte à utiliser dans l'en-tête Location qui est renvoyé dans la réponse.

Si l'un des enfants est fourni, HostName n'est pas requis.

ReplaceKeyPrefixWith

Le préfixe de nom de la clé d'objet qui remplace la valeur de KeyPrefixEquals dans la demande de redirection.

Si l'un des enfants est fourni, ReplaceKeyPrefixWith n'est pas requis. Il peut être fourni uniquement si ReplaceKeyWith n'est pas fourni.

ReplaceKeyWith

La clé de l'objet à utiliser dans l'en-tête Location qui est renvoyé dans la réponse.

Si l'un des enfants est fourni, ReplaceKeyWith n'est pas requis. Il peut être fourni uniquement si ReplaceKeyPrefixWith n'est pas fourni.

HttpRedirectCode

Le code de redirection HTTP à utiliser dans l'en-tête Location qui est renvoyé dans la réponse.

Si l'un des enfants est fourni, HttpRedirectCode n'est pas requis.

Exemples

Les exemples suivants décrivent les tâches de redirection courantes :

Exemple 1 : Redirection après renommage du préfixe de clé

Supposez que votre compartiment contienne les objets suivants :

  • index.html

  • docs/article1.html

  • docs/article2.html

Vous décidez de remplacer le nom de dossier docs/ par documents/. Après avoir fait ce changement, vous devez rediriger les demandes pour le préfixe docs/ vers documents/. A titre d'exemple, la demande pour docs/article1.html sera redirigée vers documents/article1.html.

Dans ce cas, vous ajoutez la règle de routage suivante à la configuration du site web.

<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

Exemple 2 : Redirection des demandes pour un répertoire supprimé vers une page

Supposez que vous supprimiez le dossier images/(c'est-à-dire tous les objets ayant le préfixe de clé images/). Vous pouvez ajouter une règle de routage qui redirige les demandes concernant tout objet ayant le préfixe de clé images/ vers une page appelée folderdeleted.html.

<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>

Exemple 3 : Redirection d'une erreur HTTP

Supposez que lorsqu'un objet demandé est introuvable, vous vouliez rediriger les demandes vers une instance Amazon Elastic Compute Cloud (Amazon EC2). Ajoutez une règle de redirection pour que le visiteur du site soit redirigé vers une instance Amazon EC2 qui gère la demande dès qu'un code de statut HTTP 404 (Not Found) est renvoyé.

L'exemple suivant insère également le préfixe de la clé d'objet report-404/ dans la redirection. À titre d'exemple, si vous demandez une page ExamplePage.html et qu'une erreur HTTP 404 est renvoyée, la demande est redirigée vers une page report-404/ExamplePage.html sur l'instance Amazon EC2 spécifiée. S'il n'y a pas de règle de routage et qu'une erreur HTTP 404 se produit, le document d'erreur spécifié dans la configuration est renvoyé.

<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > </Condition> <Redirect> <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName> <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>