Alibaba Cloud Dynamic Content Delivery Network (DCDN) permet de réécrire les URI d'origine. La fonctionnalité de réécriture d'URI s'applique au niveau des points de présence (POP) DCDN, sans affecter les services internes de DCDN ni les clés de cache. Cette rubrique explique comment configurer la réécriture d'URL d'origine.
Cas d'usage
Lorsqu'une ressource est déplacée sur le serveur d'origine, son URI change également. Si les requêtes utilisateur continuent d'utiliser l'ancienne URI, DCDN doit réécrire l'URL afin de rediriger ces requêtes vers la nouvelle adresse.
Par exemple, un fichier image est déplacé du répertoire /download/ vers le répertoire /image/.
Fonctionnement
Les POP comparent les URI des requêtes aux URI des ressources demandées sur le serveur d'origine, en se basant sur les règles de réécriture d'URI. Les requêtes ou certains paramètres de requête sont ensuite redirigés vers le serveur d'origine.
Si le paramètre Flag d'une règle de réécriture est défini sur None ou Break, seul le chemin de la ressource dans l'URL est réécrit.

Si le paramètre Flag est défini sur enhance break, le chemin de la ressource et la chaîne de requête sont tous deux réécrits.

Remarques d'utilisation
Vous pouvez configurer jusqu'à 50 règles de origin URI rewrite par nom de domaine.
Le système exécute les règles de réécriture listées dans l'onglet Back-to-origin URL Rewrite de haut en bas. Toute modification de cet ordre peut entraîner un résultat de réécriture différent.
La fonctionnalité origin URI rewrite diffère de la fonctionnalité rewrite disponible dans la page Cache. La fonctionnalité rewrite s'applique aux POP DCDN, affecte les services internes de DCDN et modifie les clés de cache. En revanche, la fonctionnalité origin URI rewrite intervient uniquement sur les POP DCDN communiquant avec les serveurs d'origine ; elle n'affecte pas les services internes de DCDN et ne modifie pas les clés de cache.
Si vous définissez le paramètre Flag d'une URI rewrite rule sur enhance break, les paramètres de réécriture peuvent entrer en conflit avec ceux de la fonctionnalité de filtrage des paramètres. Pour filtrer les paramètres, sélectionnez dans le volet de navigation de gauche de la console DCDN. Si vous activez ces deux fonctionnalités pour le même nom de domaine, assurez-vous que leurs configurations ne sont pas contradictoires. Pour plus d'informations, consultez Filtrage des paramètres.
Créer une règle de réécriture d'URI d'origine
Connectez-vous à la console DCDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, repérez le nom de domaine à gérer et cliquez sur Configure dans la colonne Actions.
Dans l'arborescence de navigation du nom de domaine, cliquez sur Origin Fetch.
Cliquez sur l'onglet URI Rewrite.
Dans l'onglet URI Rewrite, cliquez sur Add.
-
Dans la boîte de dialogue URI Rewrite, configurez les champs Original URI, Final URI et Flag. Le tableau suivant décrit ces paramètres.

Paramètre
Exemple
Description
Original URI
^/hello$
Saisissez une URI. Celle-ci doit commencer par une barre oblique (/) et ne peut contenir ni http:// ni de noms de domaine. Elle doit utiliser la syntaxe des expressions régulières compatibles Perl (PCRE).
Final URI
/hello/test
Saisissez une URI. Celle-ci doit commencer par une barre oblique (/) et ne peut contenir ni http:// ni de noms de domaine. La syntaxe PCRE est prise en charge.
Flag
None
Lorsque plusieurs règles de réécriture d'URI sont configurées, DCDN compare les requêtes aux règles selon l'ordre de haut en bas.
break
Si plusieurs règles de réécriture d'URI sont configurées et que la règle actuelle correspond, les règles suivantes sont ignorées.
Cette option réécrit uniquement le chemin de la ressource dans l'URI. Les paramètres d'URL restent inchangés. Utilisez la fonctionnalité de réécriture des paramètres pour modifier les paramètres d'URL.
enhance_break
Si plusieurs règles de réécriture d'URI sont configurées et que la règle actuelle correspond, les règles suivantes sont ignorées.
Contrairement à Break, enhance break réécrit également les paramètres d'URL. Toutefois, ces paramètres peuvent entrer en conflit avec ceux de la fonctionnalité décrite dans la rubrique Réécriture des paramètres d'URL dans les requêtes back-to-origin. Si vous souhaitez activer les deux fonctionnalités simultanément, vérifiez que leurs configurations ne sont pas contradictoires.
-
Cliquez sur OK pour appliquer la règle.
Pour modifier ou supprimer une règle de réécriture, localisez-la dans l'onglet URI Rewrite puis cliquez sur Modify ou Delete dans la colonne Actions.
Exemples de configuration
-
Example 1: Apply a rule whose flag is set to None.
Original URI
^/hello$
Final URI
/index.html
Flag
None
Résultat attendu
Requête d'origine :
http://aliyundoc.com/helloRequête finale :
http://aliyundoc.com/index.htmlLe système continue de comparer la requête aux autres règles de réécriture d'URI listées dans l'onglet URI Rewrite.
-
Example 2: Apply a rule whose flag is set to Break.
Original URI
^/hello.jpg$
Final URI
/image/hello.jpg
Flag
break
Description
Requête d'origine :
http://example.com/hello.jpgRequête finale :
http://example.com/image/hello.jpgLe système cesse de comparer la requête aux autres règles de réécriture d'URI listées dans l'onglet URI Rewrite.
-
Example 3: Apply a rule whose flag is set to enhance break.
Original URI
^/hello.jpg?code=123$
Final URI
/image/hello.jpg?code=321
Flag
enhance break
Résultat attendu
Requête d'origine :
http://example.com/hello.jpg?code=123Requête finale :
http://example.com/image/hello.jpg?code=321Le système cesse de comparer la requête aux autres règles de réécriture d'URI listées dans l'onglet URI Rewrite.
-
Example 4: Add a URI prefix to the root directory if the file name is a variable
Ajoutez le chemin /image à l'URI de tous les fichiers situés dans le répertoire racine. Par exemple, réécrivez /xxx en /image/xxx. Ici, xxx représente un nom de fichier tel que /hello.jpg ou /hello.html.
Original URI
^(.*)$
Remarque^(.*)$ correspond à n'importe quel caractère, et une paire de parenthèses () définit un groupe. Vous pouvez utiliser $1 dans l'URI finale pour référencer les variables capturées dans ce groupe.
Final URI
/image$1
Remarque$1 est le premier motif de remplacement spécial ; il correspond au contenu capturé par la première paire de parenthèses () dans l'expression régulière. $2 correspond au contenu de la deuxième paire de parenthèses. $n désigne le nième motif de remplacement spécial.
Flag
break
Résultat attendu
Requête d'origine :
http://example.com/hello.jpgRequête finale :
http://example.com/image/hello.jpgRequête d'origine :
http://example.com/hello.htmlRequête finale :
http://example.com/image/hello.html
Le système cesse de comparer la requête aux autres règles de réécriture d'URI listées dans l'onglet URI Rewrite.
-
Example 5: Add a URI prefix to a specific directory if the file name is a variable.
Ajoutez le chemin /image à l'URI de tous les fichiers situés dans le répertoire /live. Par exemple, réécrivez /live/xxx en /image/live/xxx. Ici, xxx représente un nom de fichier tel que /live/hello.jpg ou /live/hello.html.
Original URI
^/live/(.*)$
Final URI
/image/live/$1
Flag
break
Résultat attendu
Requête d'origine :
http://example.com/live/hello.jpgRequête finale :
http://example.com/image/live/hello.jpgRequête d'origine :
http://example.com/live/hello.htmlRequête finale :
http://example.com/image/live/hello.html
Le système cesse de comparer la requête aux autres règles de réécriture d'URI listées dans l'onglet URI Rewrite.
-
Example 6: Apply only the rule whose flag is set to None when multiple rules are configured.
Créez deux règles de réécriture d'URI, comme illustré dans la figure suivante.

Résultat attendu :
Requête d'origine :
http://example.com/image_01.png-
Requête finale :
http://example.com/image/image_02.pngRemarqueLa requête correspond à la première règle et est réécrite en
http://example.com/image_02.png. Elle correspond ensuite à la deuxième règle et est réécrite enhttp://example.com/image/image_02.png. -
Example 7: Apply the rule whose flag is set to Break when multiple rules are configured.
Créez deux règles de réécriture d'URI, comme illustré dans la figure suivante.

Résultat attendu :
Requête d'origine :
http://example.com/image_01.png-
Requête finale :
http://example.com/image_02.pngRemarqueLa requête correspond à la première règle et est réécrite en
http://example.com/image_02.png. Les autres règles sont ignorées.