

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemple de référence pour les redirections et les réécritures
<a name="redirect-rewrite-examples"></a>

Cette section fournit des exemples de divers scénarios de redirection courants. 

**Important**  
Les redirections spécifiques à un domaine ne prennent pas en charge les composants de chemin dans le champ source.  
**Pris en charge** :  
`"source": "https://example.com" `(chemins ajoutés automatiquement)
**Non pris en charge** :  
`"source": "https://example.com/specific-path"`
Les règles comportant des `domain+path` combinaisons ne sont actuellement pas prises en charge.
**Motifs alternatifs**  
 Pour les redirections de chemin spécifiques à un domaine, utilisez :  
Règles distinctes pour les domaines uniquement (les chemins sont automatiquement ajoutés)
Règles relatives aux chemins uniquement avec logique conditionnelle
Combinaisons de règles multiples

Vous pouvez utiliser ces exemples pour comprendre la syntaxe JSON permettant de créer vos propres redirections et réécritures dans l'éditeur JSON de la console Amplify. 

**Note**  
La correspondance du domaine d'adresse d'origine ne fait pas la distinction majuscules/minuscules.

**Topics**
+ [Redirections et réécritures simples](#simple-redirects-and-rewrites)
+ [Redirections pour les applications Web à page unique (SPA)](#redirects-for-single-page-web-apps-spa)
+ [Réécriture du proxy inversé](#reverse-proxy-rewrite)
+ [Trailing slashes and clean URLs](#trailing-slashes-and-clean-urls)
+ [Espaces réservés](#placeholders)
+ [Chaînes de requête et paramètres de chemin](#query-strings-and-path-parameters)
+ [Redirections basées sur les régions](#region-based-redirects)
+ [Utilisation d'expressions génériques dans les redirections et les réécritures](#wildcard-redirects)

## Redirections et réécritures simples
<a name="simple-redirects-and-rewrites"></a>

Vous pouvez utiliser l'exemple suivant pour rediriger définitivement une page spécifique vers une nouvelle adresse.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/original.html`  |  `/destination.html`  |  `permanent redirect (301)`  |  | 

Format JSON

```
[
  {
    "source": "/original.html", 
    "status": "301", 
    "target": "/destination.html", 
    "condition": null
  }
]
```

Vous pouvez utiliser l'exemple suivant pour rediriger n'importe quel chemin situé dans un dossier vers le même chemin dans un autre dossier.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/docs/<*>`  |  `/documents/<*>`  |  `permanent redirect (301)`  |  | 

Format JSON

```
[
  {
    "source": "/docs/<*>", 
    "status": "301", 
    "target": "/documents/<*>", 
    "condition": null
  }
]
```

Vous pouvez utiliser l'exemple suivant pour rediriger tout le trafic vers index.html sous forme de réécriture. Dans ce scénario, la réécriture permet d'indiquer à l'utilisateur qu'il a accédé à l'adresse d'origine.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/<*>`  |  `/index.html`  |  `rewrite (200)`  |  | 

Format JSON

```
[
  {
    "source": "/<*>", 
    "status": "200", 
    "target": "/index.html", 
    "condition": null
  }
]
```

Vous pouvez utiliser l'exemple suivant pour utiliser une réécriture afin de modifier le sous-domaine qui apparaît à l'utilisateur.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `https://mydomain.com`  |  `https://www.mydomain.com`  |  `rewrite (200)`  |  | 

Format JSON

```
[
  {
    "source": "https://mydomain.com", 
    "status": "200", "target": "https://www.mydomain.com", 
    "condition": null
  }
]
```

Vous pouvez utiliser l'exemple suivant pour rediriger vers un autre domaine avec un préfixe de chemin.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `https://mydomain.com`  |  `https://www.mydomain.com/documents`  |  `temporary redirect (302)`  |  | 

Format JSON

```
[
  {
    "source": "https://mydomain.com",
    "status": "302",
    "target": "https://www.mydomain.com/documents/",
    "condition": null
  }
]
```

Vous pouvez utiliser l'exemple suivant pour rediriger les chemins d'un dossier introuvable vers une page 404 personnalisée.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/<*>`  |  `/404.html`  |  `not found (404)`  |  | 

Format JSON

```
[
  {
    "source": "/<*>",
    "status": "404",
    "target": "/404.html",
    "condition": null
  }
]
```

**Important**  
Les composants de chemin dans les règles source basées sur le domaine (tels que`"https://domain.com/path"`) ne sont pas pris en charge et entraîneront l'ignorance de la règle sans erreur.

## Redirections pour les applications Web à page unique (SPA)
<a name="redirects-for-single-page-web-apps-spa"></a>

La plupart des frameworks SPA prennent en charge HTML5 History.pushState () pour modifier l'emplacement du navigateur sans lancer de requête au serveur. Cela fonctionne pour les utilisateurs qui commencent leur transition à partir de la racine (ou */index.html*), mais échoue pour les utilisateurs qui accèdent directement à une autre page. 

L'exemple suivant utilise des expressions régulières pour configurer une réécriture 200 pour tous les fichiers dans index.html, à l'exception des extensions de fichier spécifiées dans l'expression régulière.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `</^[^.]+$\|\.(?!(css\|gif\|ico\|jpg\|js\|png\|txt\|svg\|woff\|woff2\|ttf\|map\|json\|webp)$)([^.]+$)/>`  |  `/index.html`  |  `200`  |  | 

Format JSON

```
[
  {
    "source": "</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|ttf|map|json|webp)$)([^.]+$)/>",
    "status": "200", 
    "target": "/index.html", 
    "condition": null
  }
]
```

## Réécriture du proxy inversé
<a name="reverse-proxy-rewrite"></a>

L'exemple suivant utilise une réécriture pour transférer du contenu provenant d'un autre emplacement afin que l'utilisateur sache que le domaine n'a pas changé. Le protocole HTTPS est le seul protocole pris en charge pour les proxys inverses.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/images/<*>`  |  `https://images.otherdomain.com/<*>`  |  `rewrite (200)`  |  | 

Format JSON

```
[
  {
    "source": "/images/<*>", 
    "status": "200", 
    "target": "https://images.otherdomain.com/<*>", 
    "condition": null
  }
]
```

## Trailing slashes and clean URLs
<a name="trailing-slashes-and-clean-urls"></a>

Pour créer des structures d'URL propres telles que *about* au lieu de *about.html*, des générateurs sur site statiques tels que Hugo génèrent des répertoires pour les pages avec un index.html (*/about/index.html*). Amplify crée automatiquement un nettoyage URLs en ajoutant une barre oblique lorsque cela est nécessaire. Le tableau ci-dessous présente différents scénarios :


****  

| Entrées utilisateur dans le navigateur | URL dans la barre d'adresse | Document affiché | 
| --- | --- | --- | 
|  `/about`  |  `/about`  |  `/about.html`  | 
|  `/about (when about.html returns 404)`  |  `/about/`  |  `/about/index.html`  | 
|  `/about/`  |  `/about/`  |  `/about/index.html`  | 

## Espaces réservés
<a name="placeholders"></a>

Vous pouvez utiliser l'exemple suivant pour rediriger les chemins d'une structure de dossiers vers une structure correspondante dans un autre dossier.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/docs/<year>/<month>/<date>/<itemid>`  |  `/documents/<year>/<month>/<date>/<itemid>`  |  `permanent redirect (301)`  |  | 

Format JSON

```
[
  {
    "source":  "/docs/<year>/<month>/<date>/<itemid>", 
    "status": "301",
    "target": "/documents/<year>/<month>/<date>/<itemid>",
               "condition": null
   }
]
```

## Chaînes de requête et paramètres de chemin
<a name="query-strings-and-path-parameters"></a>

**Avertissement**  
N'incluez pas de secrets, d'informations d'identification ou de données sensibles dans URLs les paramètres de chemin ou de requête. Ces valeurs sont consultables en texte brut dans les journaux d'accès de votre application Amplify.

Vous pouvez utiliser l'exemple suivant pour rediriger un chemin vers un dossier dont le nom correspond à la valeur d'un élément de chaîne de requête figurant dans l'adresse d'origine :


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/docs?id=<my-blog-id-value`  |  `/documents/<my-blog-post-id-value>`  |  `permanent redirect (301)`  |  | 

Format JSON

```
[
  {
    "source": "/docs?id=<my-blog-id-value>", 
    "status": "301",
    "target": "/documents/<my-blog-id-value>", 
    "condition": null
  }
]
```

**Note**  
Amplify transmet tous les paramètres de chaîne de requête au chemin de destination pour les redirections 301 et 302. Toutefois, si l'adresse d'origine inclut une chaîne de requête définie sur une valeur spécifique, comme illustré dans cet exemple, Amplify ne transmet pas les paramètres de requête. Dans ce cas, la redirection s'applique uniquement aux demandes adressées à l'adresse de destination avec la valeur de requête spécifiée`id`.

Vous pouvez utiliser l'exemple suivant pour rediriger tous les chemins introuvables à un niveau donné d'une structure de dossiers vers index.html dans un dossier spécifique.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/documents/<folder>/<child-folder>/<grand-child-folder>`  |  `/documents/index.html`  |  `not found (404)`  |  | 

Format JSON

```
[
  {
    "source": "/documents/<x>/<y>/<z>", 
    "status": "404", 
    "target": "/documents/index.html", 
    "condition": null
  }
]
```

## Redirections basées sur les régions
<a name="region-based-redirects"></a>

Vous pouvez utiliser l'exemple suivant pour rediriger les demandes en fonction de la région.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/documents`  |  `/documents/us/`  |  `temporary redirect (302)`  |  `<US>`  | 

Format JSON

```
[
  {
    "source": "/documents", 
    "status": "302", 
    "target": "/documents/us/", 
    "condition": "<US>"
  }
]
```

## Utilisation d'expressions génériques dans les redirections et les réécritures
<a name="wildcard-redirects"></a>

Vous pouvez utiliser l'expression générique`<*>`, dans l'adresse d'origine pour une redirection ou une réécriture. Vous devez placer l'expression à la fin de l'adresse d'origine et elle doit être unique. Amplify ignore les adresses d'origine qui incluent plusieurs expressions génériques ou les utilise à un emplacement différent.

Voici un exemple de redirection valide avec une expression générique.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/docs/<*>`  |  `/documents/<*>`  |  `permanent redirect (301)`  |   | 

Les deux exemples suivants illustrent des redirections *non valides* avec des expressions génériques.


****  

| Adresse d'origine | Adresse de destination | Type de redirection | Code pays | 
| --- | --- | --- | --- | 
|  `/docs/<*>/content`  |  `/documents/<*>/content`  |  `permanent redirect (301)`  |   | 
|  `/docs/<*>/content/<*>`  |  `/documents/<*>/content/<*>`  |  `permanent redirect (301)`  |   | 