Tous les produits
Search
Centre de documentation

Edge Security Acceleration:Réécriture d'URL

Dernière mise à jour :Aug 12, 2026

Configurez des règles de réécriture d'URL sur les nœuds edge ESA pour modifier le chemin et la chaîne de requête lors des requêtes vers l'origine. Migrez ainsi les chemins du serveur d'origine sans modifier les URL visibles par les utilisateurs ni les configurations frontales.

Cas d'usage typiques

  • Migration d'origine : Le chemin des fichiers sur l'origine change, mais vous souhaitez conserver le chemin d'accès utilisateur inchangé.

  • Adaptation de version d'API : Réécrivez les chemins d'une ancienne version d'API vers la nouvelle version.

  • Normalisation des paramètres : Unifiez les formats de paramètres transmis par différents clients.

  • URL simplifiée : Associez des chemins backend complexes à des chemins utilisateur épurés.

Fonctionnement

Remarque

Si la réécriture d'URL est activée, les requêtes de préchargement doivent utiliser l'URL réécrite.

La réécriture d'URL s'applique uniquement lors des requêtes vers l'origine et n'affecte pas le pipeline de traitement interne d'ESA. La clé de cache étant générée à partir de l'URL d'origine, la correspondance du cache reste inchangée. L'URL réécrite sert exclusivement aux requêtes vers l'origine.

Flux d'exécution

  1. Vérification du cache : Le nœud edge recherche le contenu en cache via l'URL d'origine. En cas d'absence dans le cache, les règles de réécriture transforment l'URL en chemin cible.

  2. Requête vers l'origine : Le nœud edge envoie l'URL réécrite au serveur d'origine. La réponse est mise en cache sous l'URL d'origine comme clé de cache.

  3. Restitution du contenu mis en cache : Le nœud edge renvoie le contenu en cache au client.

Ordre d'exécution

La réécriture d'URL intervient après la vérification du cache et la sélection de l'origine, mais avant la modification des en-têtes de requête vers l'origine. Le chemin est ajusté une fois la cible d'origine déterminée, sans impacter le traitement des en-têtes.

Configurer les règles de réécriture d'URL

  1. Dans la console ESA, sélectionnez Websites, puis dans la colonne Websites, cliquez sur le site cible.

  2. Dans le volet de navigation de gauche, choisissez Websites > Website.

  3. Dans la section Rules, cliquez sur Transform Rules et saisissez un Rewrite URL. Configurez le Create Rule et la Rule Name, puis cliquez sur OK.

    Objet de la réécriture

    Méthode d'opération

    Description

    Exemple

    Path

    Retain

    Ne modifie pas le chemin d'origine.

    -

    Path

    Remplace par un chemin fixe (doit commencer par /).

    /new/path

    Dynamic

    Utilise une expression pour générer dynamiquement le chemin.

    concat("/v2", http.request.uri.path)

    Query String

    Retain

    Ne modifie pas la chaîne de requête d'origine.

    -

    Static

    Remplace par des paramètres fixes (sans ?).

    version=new&type=api

    Retain

    Utilise une expression pour générer dynamiquement la chaîne de requête.

    concat("version=new&", http.request.uri.query)

Exemples de configuration

Exemple 1 : Migration de chemin d'origine

  • Cas d'usage : L'origine déplace les images du répertoire /images/ vers le répertoire /static/img/.

  • Condition de correspondance : starts_with(http.request.uri.path, "/images/")

  • Configuration de la réécriture :

    Objet de la réécriture : Path

    Méthode d'opération : Dynamic

    Expression : regex_replace(http.request.uri.path, "^/images/", "/static/img/")

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/images/logo.png

    Requête vers l'origine : https://origin.com/static/img/logo.png

Exemple 2 : Adaptation de version d'API

  • Cas d'usage : Réécrire les requêtes de /api/v1/ vers /api/v2/ lors des requêtes vers l'origine et ajouter un identifiant de version.

  • Condition de correspondance : starts_with(http.request.uri.path, "/api/v1/")

  • Configuration de la réécriture :

    Objet de la réécriture : Path, Query string

    Méthode d'opération : Dynamic

    Expression de réécriture du chemin : regex_replace(http.request.uri.path, "^/api/v1/", "/api/v2/")

    Expression de réécriture de la chaîne de requête : concat("api_version=v2&", http.request.uri.query)

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/api/v1/users?limit=10

    Requête vers l'origine : https://origin.com/api/v2/users?api_version=v2&limit=10

Exemple 3 : Normalisation des paramètres

  • Cas d'usage : Différents clients utilisent des noms de paramètres distincts (comme userid et uid). Unifiez-les sous le nom standard user_id.

  • Condition de correspondance : http.request.uri.query contains "userid="

  • Configuration de la réécriture :

    Objet de la réécriture : Query string

    Méthode d'opération : Dynamic

    Expression : regex_replace(http.request.uri.query, "userid=", "user_id=")

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/profile?userid=123

    Requête vers l'origine : https://origin.com/profile?user_id=123

Exemple 4 : Normalisation des chemins

Case 1

  • Cas d'usage : Supprimer les barres obliques superflues (comme //) dans les URL dues à des erreurs de saisie.

  • Remarque : La fonction regex_replace remplace uniquement la première occurrence dans la chaîne source.

  • Condition de correspondance : http.request.uri.path contains "//"

  • Configuration de la réécriture :

    Objet de la réécriture : Path

    Méthode d'opération : Dynamic

    Expression : regex_replace(http.request.uri.path, "//+", "/")

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/path//to/resource

    Requête vers l'origine : https://origin.com/path/to/resource

Case 2

  • Cas d'usage : Réduire plusieurs barres obliques consécutives en une seule barre oblique. Exemple : /path///download//image//user.jpg.

  • Solution : Imbriquez plusieurs appels à regex_replace pour remplacer progressivement les barres obliques consécutives.

  • Condition de correspondance : http.request.uri.path contains "//"

  • Configuration de la réécriture :

    • Objet de la réécriture : Path

    • Méthode d'opération : Dynamic

    • Expression : regex_replace(regex_replace(regex_replace(http.request.uri.path, "//+", "/"), "//+", "/"), "//+", "/")

  • Effet de la réécriture :

    • Requête utilisateur : https://example.com/path///download//image//user.jpg

    • Requête vers l'origine : https://origin.com/path/download/image/user.jpg

Exemple 5 : Suppression de tous les paramètres de requête

  • Cas d'usage : Retirer tous les paramètres de requête des ressources statiques. Par exemple, supprimer les chaînes de requête des URI se terminant par .css.

  • Condition de correspondance : ends_with(http.request.uri.path, ".css")

  • Configuration de la réécriture :

    Objet de la réécriture : Query string

    Méthode d'opération : Dynamic

    Expression : regex_replace(http.request.uri.query, ".*", "")

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/style.css?version=1.2.3

    Requête vers l'origine : https://origin.com/style.css?

Exemple 6 : Simplification des chemins dynamiques

  • Cas d'usage : Éliminer les séquences numériques redondantes des chemins. Par exemple, retirer 123 suivi de chiffres dans les chemins sous /example/.

  • Condition de correspondance : (http.request.uri matches "^/example/(.*)123[0-9]+(.*)$")

  • Configuration de la réécriture :

    Objet de la réécriture : Path

    Méthode d'opération : Dynamic

    Expression : regex_replace(http.request.uri,"^/example/(.*)123[0-9]+(.*)$","/example/$1$2")

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/example/tool12300341features

    Requête vers l'origine : https://origin.com/example/toolfeatures

Exemple 7 : Extraction de paramètres de chemin et ajout à la chaîne de requête

  • Cas d'usage : Extraire un segment de chemin dynamique, l'ajouter comme paramètre de requête et le remplacer par une chaîne fixe :

    URI d'origine : /api/v1/dynamic_value/download?version=1&size=2

    URI réécrite : /api/v1/fixed/download?version=1&size=2&token=dynamic_value

  • Condition de correspondance : Toutes les requêtes entrantes

  • Configuration de la réécriture :

    Objet de la réécriture : Path + Query string

    Méthode d'opération : Dynamic

    Expression de réécriture du chemin : regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$", "/api/v1/fixed/download")

    Expression de réécriture de la chaîne de requête : concat(http.request.uri.query,"&token=",regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$","$1"))

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/api/v1/ABC123/download?version=1&size=2

    Requête vers l'origine : https://origin.com/api/v1/fixed/download?version=1&size=2&token=ABC123

Exemple 8 : Suppression de paramètres spécifiques

  • Cas d'usage : Retirer des paramètres de requête précis. Par exemple, pour https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6, supprimez key2, key3, key5 et key6 afin de ne conserver que key1 et key4.

  • Condition de correspondance : Toutes les requêtes entrantes

  • Configuration de la réécriture :

    Objet de la réécriture : Query string

    Méthode d'opération : Dynamic

    Expression : regex_replace(regex_replace(regex_replace(regex_replace(http.request.uri.query, "(&?key2=[^&]*)", ""), "(&?key3=[^&]*)", ""), "(&?key5=[^&]*)", ""), "(&?key6=[^&]*)", "")

    Remarque

    Chaque appel imbriqué à regex_replace supprime un paramètre. Le motif (&?keyN=[^&]*) capture le caractère & précédent afin d'éviter les caractères & résiduels.

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6

    Requête vers l'origine : https://origin.com/1.txt?key1=value1&key4=value4

Exemple 9 : Conservation de paramètres spécifiques

  • Cas d'usage : Conserver uniquement certains paramètres de requête. Par exemple, pour https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4, ne gardez que key1 et key4.

  • Condition de correspondance : Toutes les requêtes entrantes

  • Configuration de la réécriture :

    Objet de la réécriture : Query string

    Méthode d'opération : Dynamic

    Expression : concat("key1=", http.request.uri.args["key1"], "&key4=", http.request.uri.args["key4"])

    Remarque

    La fonction concat reconstruit la chaîne de requête avec uniquement les paramètres spécifiés. Utilisez http.request.uri.args["keyN"] pour extraire la valeur de chaque paramètre. Les paramètres non listés sont exclus.

  • Effet de la réécriture :

    Requête utilisateur : https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4

    Requête vers l'origine : https://origin.com/1.txt?key1=value1&key4=value4