Tous les produits
Search
Centre de documentation

Edge Security Acceleration:Réécriture d'URL

Dernière mise à jour :Sep 02, 2026

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

Cas d'utilisation typiques

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

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

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

  • URL simplifiée : Mappez des chemins backend complexes vers des chemins clairs visibles par l'utilisateur.

Fonctionnement

Remarque

Lorsqu'ESA exécute une tâche de préchargement de cache soumise par un client, les règles de réécriture d'URL ne s'appliquent pas à l'URL de préchargement.

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 est générée à partir de l'URL d'origine, de sorte que la correspondance de cache reste inchangée. L'URL réécrite est utilisée uniquement pour les requêtes vers l'origine.

Flux d'exécution

  1. Vérification du cache : Le nœud périphérique recherche le cache en utilisant l'URL d'origine. En cas d'absence de cache (cache miss), les règles de réécriture d'URL transforment l'URL vers le chemin cible.

  2. Requête vers l'origine : L'URL réécrite est envoyée au serveur d'origine. La réponse est mise en cache sous l'URL d'origine en tant que clé de cache.

  3. Retour du contenu mis en cache : Le contenu mis en cache est renvoyé au client.

Ordre d'exécution

La réécriture d'URL s'exécute 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é après la détermination de la cible d'origine, sans affecter le traitement des en-têtes.

Configuration des règles de réécriture d'URL

  1. Dans la console ESA, sélectionnez Sites web, 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 réécriture

    Méthode d'opération

    Description

    Exemple

    Path

    Retain

    Ne pas modifier le chemin d'origine.

    -

    Path

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

    /new/path

    Dynamic

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

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

    Query String

    Conserver

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

    -

    Static

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

    version=new&type=api

    Retain

    Utiliser 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 du chemin d'origine

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

  • Si les requêtes correspondent à... starts_with(http.request.uri.path, "/images/")

  • Configuration de réécriture :

    Objet de réécriture : Chemin

    Méthode d'opération : Dynamique

    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'utilisation : Réécrire les requêtes de /api/v1/ vers /api/v2/ lors des requêtes vers l'origine et ajouter un identifiant de version.

  • Si les requêtes correspondent à... starts_with(http.request.uri.path, "/api/v1/")

  • Configuration de réécriture :

    Objet de réécriture : Chemin, Chaîne de requête

    Méthode d'opération : Dynamique

    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 : Standardisation des paramètres

  • Cas d'utilisation : Différents clients utilisent des noms de paramètres différents (tels que userid et uid). Uniformisez-les vers le standard user_id.

  • Si les requêtes correspondent à... http.request.uri.query contains "userid="

  • Configuration de réécriture :

    Objet de réécriture : Chaîne de requête

    Méthode d'opération : Dynamique

    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 du chemin

Cas 1

  • Cas d'utilisation : Supprimer les barres obliques supplémentaires (telles que //) des URL causées par des erreurs de saisie.

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

  • Si les requêtes correspondent à... http.request.uri.path contains "//"

  • Configuration de réécriture :

    Objet de réécriture : Chemin

    Méthode d'opération : Dynamique

    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

Cas 2

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

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

  • Si les requêtes correspondent à... http.request.uri.path contains "//"

  • Configuration de réécriture :

    • Objet de réécriture : Chemin

    • Méthode d'opération : Dynamique

    • 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'utilisation : Supprimer tous les paramètres de requête des ressources statiques. Par exemple, retirer les chaînes de requête des URI se terminant par .css.

  • Si les requêtes correspondent à... ends_with(http.request.uri.path, ".css")

  • Configuration de réécriture :

    Objet de réécriture : Chaîne de requête

    Méthode d'opération : Dynamique

    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'utilisation : Supprimer les séquences numériques redondantes des chemins. Par exemple, retirer 123 suivi de chiffres des chemins sous /example/.

  • Si les requêtes correspondent à... (http.request.uri matches "^/example/(.*)123[0-9]+(.*)$")

  • Configuration de réécriture :

    Objet de réécriture : Chemin

    Méthode d'opération : Dynamique

    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 des paramètres de chemin et ajout à la chaîne de requête

  • Cas d'utilisation : Extraire un segment de chemin dynamique, l'ajouter en tant que 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

  • Si les requêtes correspondent à... Toutes les requêtes entrantes

  • Configuration de réécriture :

    Objet de réécriture : Chemin + Chaîne de requête

    Méthode d'opération : Dynamique

    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'utilisation : Supprimer des paramètres de requête spécifiques. Par exemple, étant donné https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6, supprimer key2, key3, key5 et key6, en ne conservant que key1 et key4.

  • Si les requêtes correspondent à... Toutes les requêtes entrantes

  • Configuration de réécriture :

    Objet de réécriture : Chaîne de requête

    Méthode d'opération : Dynamique

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

    Remarque

    Chaque regex_replace imbriqué supprime un paramètre. Le motif (&?keyN=[^&]*) correspond au & précédent pour é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'utilisation : Conserver uniquement des paramètres de requête spécifiques. Par exemple, étant donné https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4, ne conserver que key1 et key4.

  • Si les requêtes correspondent à... Toutes les requêtes entrantes

  • Configuration de réécriture :

    Objet de réécriture : Chaîne de requête

    Méthode d'opération : Dynamique

    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 chaque valeur de 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

Exemple 10 : Exclusion des requêtes par extension de fichier et réécriture

  • Cas d'utilisation : Exclure les requêtes dont l'extension de fichier est html, et réécrire toutes les autres requêtes vers un chemin spécifié.

  • Si les requêtes correspondent à... Extension de fichier différente de html. Expression : http.request.uri.path.extension ne html

  • Configuration de réécriture :

    Objet de réécriture : Chemin

    Méthode d'opération : Statique

    Chemin réécrit : /static/index.html

Remarque

La variable http.request.uri.path.extension renvoie l'extension du segment de fichier le plus à droite dans le chemin URI, sans le point initial. Par exemple, l'extension de /cat.jpg est jpg, l'extension de /cat est une chaîne vide, et l'extension de /cat.html est html.

Exemple 11 : Routage des requêtes selon l'extension de fichier

  • Cas d'utilisation : Router les requêtes possédant une extension de fichier vers static/url, et router les requêtes sans extension de fichier vers static/index.html.

  • Si les requêtes correspondent à... et configuration de réécriture :

    • Pour les requêtes avec une extension de fichier, utilisez la condition de correspondance http.request.uri.path.extension ne "".

      Objet de réécriture : Chemin

      Méthode d'opération : Statique

      Chemin réécrit : /static/url

    • Pour les requêtes sans extension de fichier, utilisez la condition de correspondance http.request.uri.path.extension eq "".

      Objet de réécriture : Chemin

      Méthode d'opération : Statique

      Chemin réécrit : static/index.html