Si le chemin d'une ressource sur votre serveur d'origine change, le chemin correspondant sur le nœud CDNDCDN change également. Lorsqu'un utilisateur demande l'URL d'origine, le nœud CDNDCDN réécrit l'URL et redirige la requête vers le chemin de destination. Ce processus réduit le nombre de requêtes adressées à l'origine et améliore les performances d'accès des clients.
Informations générales
Le code d'état HTTP 302 (302 Found) indique qu'une ressource a été déplacée temporairement. Après avoir configuré une règle de réécriture d'URL, le nœud CDNDCDN inclut la nouvelle URL dans l'en-tête HTTP Location. Lorsque le client reçoit la réponse 302, il demande la nouvelle URL.
Par défaut, les nœuds CDNDCDN envoient un code d'état 302 après la configuration d'une règle de réécriture d'URL. Les codes d'état 303 et 307 sont également pris en charge. Pour modifier le code d'état, soumettez une demande en ou en soumettant un ticket.
|
Code |
Signification |
Méthode de traitement |
Scénario d'application typique |
|
302 |
Found |
La méthode GET ne change pas. Les autres méthodes peuvent être converties en méthode GET. |
La page est temporairement indisponible pour des raisons imprévues. Dans ce cas, les moteurs de recherche ne mettent pas à jour leurs liens. |
|
303 |
See Other |
La méthode GET ne change pas. Les autres méthodes sont converties en méthode GET. Le corps du message est perdu. |
Utilisé pour la redirection de page après l'exécution d'une requête PUT ou POST. Cela empêche le déclenchement répété de l'opération en cas d'actualisation de la page. |
|
307 |
Temporary Redirect |
Ni la méthode ni le corps du message ne changent. |
La page est temporairement indisponible pour des raisons imprévues. Dans ce cas, les moteurs de recherche ne mettent pas à jour leurs liens. Ce code d'état est préférable au code 302 lorsque le site prend en charge des liens ou des opérations utilisant des méthodes autres que GET. |
Un seul nom de domaine peut comporter jusqu'à 50 règles de réécriture. Si plusieurs règles sont configurées, elles sont exécutées séquentiellement de haut en bas, selon leur ordre d'apparition dans la liste de réécriture d'URL de la console CDNDCDN.
Différences entre **Access URL Rewrite et Origin Path Rewrite****
Fonctionnalité | Objet concerné | Expérience client | Scénario d'application |
Affecte l'URL à laquelle le client accède. Elle modifie également l'URL utilisée par le nœud DCDN pour les requêtes vers l'origine. |
| Couramment utilisé pour migrer ou mapper des URL d'un ancien nom de domaine vers un nouveau. Également utilisé pour fournir des URL différentes aux clients mobiles et PC. Exemple : Lorsqu'un client accède à | |
Affecte l'URL utilisée par le nœud DCDN pour les requêtes vers l'origine. L'URL à laquelle le client accède ne change pas. | L'URL visible par le client est identique à l'URL d'accès réelle. Aucun changement n'est perceptible. | Couramment utilisé pour masquer la structure d'URL réelle du serveur d'origine afin de protéger ses informations. Également utilisé pour le mappage d'URL, permettant au nœud DCDN de récupérer du contenu depuis différents dossiers du serveur d'origine. Exemple : Lorsqu'un client accède à |
Diagramme de **Access URL Rewrite****
Le client envoie une requête à un nœud DCDN. L'URL de la requête est
old.example.com/hello.Après réception de la requête, le nœud DCDN applique la règle de réécriture d'URL. Le nœud DCDN inclut la nouvelle URL,
new.example.com/hello, dans l'en-tête Location de la réponse 302 envoyée au client.Après réception de la réponse 302, le client envoie une requête à la nouvelle URL.
Le nœud DCDN vérifie son cache. Si le cache contient le contenu correspondant à l'URL réécrite, le nœud renvoie directement le contenu au client. Sinon, le nœud DCDN envoie une requête au serveur d'origine en utilisant l'URL réécrite,
new.example.com/hello.Le serveur d'origine reçoit la requête et renvoie le contenu de la réponse au nœud DCDN.
Le nœud DCDN met en cache le contenu de la réponse et le renvoie au client.
Diagramme de **Origin Path Rewrite****
Le client envoie une requête à un nœud DCDN. L'URL de la requête est
cdn.example.com/files/hello.txt.Après réception de la requête, le nœud DCDN vérifie son cache. Si le cache contient le contenu correspondant à l'URL de la requête, le nœud renvoie directement le contenu au client. Sinon, le nœud DCDN applique la règle de réécriture de l'URL de récupération d'origine. Il réécrit l'URL de récupération d'origine en
origin.example.com/secret/files/hello.txtet envoie une requête au serveur d'origine.Après réception de la requête, le serveur d'origine renvoie le contenu de la réponse au nœud DCDN.
Le nœud DCDN met en cache le contenu de la réponse et le renvoie au client.
Procédure
Connectez-vous à la console CDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, localisez le nom de domaine cible et cliquez sur Manage dans la colonne Actions.
Dans le volet de navigation du domaine, cliquez sur Cache.
Cliquez sur l'onglet Access URL Rewrite.
-
Cliquez sur Create et configurez les paramètres de réécriture des URL d'accès.
Paramètre
Description
Path to Be Rewritten
Le chemin doit commencer par une barre oblique
/. Il ne doit pas inclure l'en-tête de protocole ni le nom de domaine. Les expressions régulières PCRE sont prises en charge, telles que^/hello$.Le contenu situé après un caractère
#dans une URL constitue un identifiant de fragment côté client. Les navigateurs n'envoient pas les identifiants de fragment au serveur. Par conséquent, les règles de réécriture DCDN ne peuvent pas correspondre au chemin situé après le caractère#. Pour configurer une redirection pour une URL contenant un fragment#, vous devez créer une règle de réécriture distincte pour chaque adresse de destination, en faisant correspondre exactement le chemin précédant le caractère#.Target Path
Si la règle d'exécution est définie sur Break, le chemin doit commencer par une barre oblique
/. Il ne doit pas inclure l'en-tête de protocole ni le nom de domaine.Si la règle d'exécution est définie sur Redirect, le chemin peut inclure l'en-tête de protocole et le nom de domaine. Les expressions régulières PCRE sont prises en charge. Par exemple, vous pouvez utiliser
$1et$2pour capturer les chaînes situées entre parenthèses dans le chemin à réécrire.
Flag
Redirect et Break sont pris en charge par défaut.
Redirect : Si l'URL d'une requête correspond à une règle, la requête est redirigée vers l'URL de destination avec un code d'état 302. L'en-tête Location que le nœud CDN renvoie au client contient l'URL de destination. Les paramètres de l'URL d'origine ne sont pas modifiés. Après l'exécution de cette règle, le système continue de faire correspondre les règles restantes.
Break : Si l'URL d'une requête correspond à une règle, la requête est réécrite vers l'URL de destination. Les paramètres de l'URL d'origine ne sont pas modifiés. Après l'exécution de cette règle, le système ne fait plus correspondre les règles restantes.
Les règles empty, enhance_break et enhance_redirect sont également prises en charge. Pour utiliser ces règles, vous devez soumettre un ticket afin qu'elles soient configurées en arrière-plan.
empty : Si plusieurs règles sont configurées et que l'URL d'une requête correspond à une règle, le système continue de faire correspondre les règles suivantes après l'exécution de la règle actuelle.
enhance_break : Similaire à break, mais réécrit l'intégralité de l'URL, y compris les paramètres.
enhance_redirect : Similaire à redirect, mais réécrit l'intégralité de l'URL, y compris les paramètres.
RemarqueDifférentes règles d'exécution utilisent différentes méthodes de réécriture. Elles diffèrent également quant à la possibilité pour l'URL réécrite d'utiliser d'autres noms de domaine ou protocoles :
empty, Break et enhance_break réécrivent directement l'URL de la requête de l'utilisateur. Ils ne prennent pas en charge la réécriture vers un autre nom de domaine ou protocole, comme le passage de HTTP à HTTPS.
Redirect et enhance_redirect utilisent une redirection 302 pour réécrire l'URL. Ils prennent en charge la réécriture vers d'autres noms de domaine et protocoles :
L'adresse Location 302 peut être définie sur un nom de domaine différent, et pas uniquement sur le nom de domaine accéléré actuel. Par exemple, vous pouvez réécrire une URL du domaine
example.comvers le domainealiyundoc.com.L'adresse Location 302 prend en charge d'autres protocoles. Par exemple, vous pouvez réécrire une URL de HTTP vers HTTPS.
Rule Condition
Une condition de règle identifie diverses informations de paramètre dans une requête utilisateur. Cela détermine si une configuration s'applique à cette requête.
ImportantLorsque vous référencez des conditions de règle, elles sont mises en correspondance en fonction de la priorité des conditions de règle associées, et non de l'ordre de configuration de la fonctionnalité elle-même.
Do not use : N'utilise pas de condition de règle.
Pour ajouter ou modifier des conditions de règle, gérez-les dans le Rules Engine.
Nginx Var
Cette option est décochée par défaut. Cochez cette option pour utiliser les variables NGINX intégrées dans l'URL de destination. Voici un exemple de configuration :
Chemin à réécrire :
^/test.jpg$Chemin de destination :
/test.${arg_type}Si vous activez le calcul des variables NGINX, la valeur de
${nginx_var}est calculée.${arg_type}représente la valeur du paramètretypedans l'URL d'origine.
RemarquePour utiliser ce paramètre, vous devez soumettre un ticket afin qu'il soit configuré en arrière-plan.
-
Cliquez sur OK.
Après avoir configuré la fonctionnalité de réécriture, vous pouvez Modify ou Delete la règle depuis la liste de réécriture.
Exemples de configuration
Exemple 1
Lorsqu'un client demande http://example.aliyundoc.com/hello, le chemin de la requête est /hello. Le nœud DCDN inclut la nouvelle URL http://example.aliyundoc.com/index.html dans l'en-tête Location de la réponse 302 et renvoie la réponse au client. Le client envoie ensuite une requête à http://example.aliyundoc.com/index.html.
Pour cette règle, Path to Rewrite est défini sur ^/hello$, Destination Path est défini sur /index.html et Execution Rule est défini sur redirect.
Lors d'une redirection 302, si l'en-tête Location n'inclut pas de protocole ni de nom de domaine, le client utilise par défaut le protocole et le nom de domaine de la requête d'origine.
Exemple 2
Lorsqu'un client demande http://example.aliyundoc.com/hello, le chemin de la requête /hello correspond à l'expression régulière ^/hello$. Le nœud DCDN renvoie une réponse 302 au client. La réponse inclut l'URL de destination https://test.aliyundoc.com/index.html dans l'en-tête Location. Après réception de la réponse, le client envoie une requête à https://test.aliyundoc.com/index.html.
Règle de configuration : Définissez Path to Rewrite sur ^/hello$, définissez Destination Path sur https://test.aliyundoc.com/index.html et définissez Execution Rule sur redirect.
Exemple 3
Lorsqu'un client demande http://www.example.com/cdn/url/http://image.example.com/image/cat.jpg, le chemin de la requête contient /cdn/url/http://, ce qui correspond à l'expression régulière ^/cdn/url/http://(.*). Le nœud DCDN renvoie une réponse 302 au client. La réponse inclut l'URL de destination http://image.example.com/image/cat.jpg dans l'en-tête Location. Après réception de la réponse, le client envoie une requête à http://image.example.com/image/cat.jpg.
Pour la règle de configuration, définissez Destination Path sur http://$1 et Execution Rule sur redirect.
Exemple 4
Lorsqu'un client demande http://example.aliyundoc.com/stories/index.html#/voice/318, la partie #/voice/318 de l'URL est un identifiant de fragment côté client. Le navigateur n'envoie pas cette partie au serveur. Le chemin de requête réel reçu par le nœud DCDN est /stories/index.html. Par conséquent, lors de la configuration de la règle de réécriture, définissez Path to Rewrite sur ^/stories/index\.html$ pour faire correspondre le chemin précédant le caractère #. Ensuite, définissez Destination Path sur l'URL cible et Execution Rule sur Redirect.
Pour rediriger plusieurs URL sources ayant des fragments # différents vers des URL de destination différentes, vous devez configurer une règle de réécriture distincte pour chaque chemin source. En effet, un serveur ne peut pas distinguer les URL en fonction du contenu suivant le symbole #.