Exemples de didacticiel de stratégies de syntaxe par défaut pour la réécriture

Avec la fonction de réécriture, vous pouvez modifier n’importe quelle partie d’un en-tête HTTP et, pour les réponses, vous pouvez modifier le corps HTTP. Vous pouvez utiliser cette fonctionnalité pour accomplir un certain nombre de tâches utiles, telles que la suppression d’en-têtes HTTP inutiles, le masquage d’URL internes, la redirection de pages Web et la redirection de requêtes ou de mots-clés.

Dans les exemples suivants, vous créez d’abord une action de réécriture et une stratégie de réécriture. Ensuite, vous liez la stratégie globalement.

Ce document comprend les détails suivants :

  • Redirection d’une URL externe vers une URL interne
  • Redirection d’une requête
  • Réécriture d’HTTP en HTTPS
  • Suppression des en-têtes indésirables
  • Réduction des redirections de serveur Web
  • Masquage de l’en-tête du serveur
  • Conversion du texte brut en chaîne codée URL et vice-versa

Pour plus d’informations sur les commandes et les descriptions de syntaxe, reportez-vous àRéférence de la commande de réécriturela page.

Redirection d’une URL externe vers une URL interne

Cet exemple décrit comment créer une action de réécriture et une stratégie de réécriture qui redirige une URL externe vers une URL interne. Vous créez une action, appelée act_external_to_internal, qui effectue la réécriture. Ensuite, vous créez une stratégie appelée pol_external_to_internal.

Pour rediriger une URL externe vers une URL interne à l’aide de l’interface de ligne de commande

  • Pour créer l’action de réécriture, à l’invite de commandes, tapez :

    add rewrite action act_external_to_internal REPLACE 'http.req.hostname.server' "host_name_of_internal_Web_server"

  • Pour créer la stratégie de réécriture, à l’invite de commandes Citrix ADC, tapez :

    add rewrite policy pol_external_to_internal 'http.req.hostname.server.eq("host_name_of_external_Web_server")' act_external_to_internal

  • Liez la stratégie à l’échelle mondiale.

Pour rediriger une URL externe vers une URL interne à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > Réécriture > Actions.

  2. Dans le volet d’informations, cliquez sur Ajouter.

  3. Dans la boîte de dialogue Créer une action de réécriture, entrez le nom act_external_to_internal.

  4. Pour remplacer le nom d’hôte du serveur HTTP par le nom du serveur interne, choisissez Remplacer dans la zone de liste Type.

  5. Dans le champ Nom d’en-tête, tapez Hôte.

  6. Dans le champ de texte d’expression String pour remplacement, tapez le nom d’hôte interne de votre serveur Web.

  7. Cliquez sur Create, puis cliquez sur Close.

  8. Dans le volet de navigation, cliquez sur Stratégies.

  9. Dans le volet d’informations, cliquez sur Ajouter.

  10. Dans le champ Nom, tapez pol_external_to_internal. Cette stratégie détecte les connexions au serveur Web.

  11. Dans le menu déroulant Action, choisissez l’action act_external_to_internal.

  12. Dans l’éditeur d’expression, construisez l’expression suivante :

HTTP.REQ.HOSTNAME.SERVER.EQ("www.example.com")
  1. Liez votre nouvelle stratégie à l’échelle mondiale.

Redirection d’une requête

Cet exemple décrit comment créer une action de réécriture et une stratégie de réécriture qui redirige une requête vers l’URL appropriée. L’exemple suppose que la requête contient un en-tête Host défini sur www.example.com et une méthode GET avec la chaîne /query.cgi ? server=5. La redirection extrait le nom de domaine de l’en-tête de l’hôte et le numéro de la chaîne de requête, et redirige la requête de l’utilisateur vers le serveur Web5.Example.com, où le reste de la requête de l’utilisateur est traité.

Remarque : Bien que les commandes suivantes apparaissent sur plusieurs lignes, vous devez les saisir sur une seule ligne sans sauts de ligne.

Pour rediriger une requête vers l’URL appropriée à l’aide de la ligne de commande

  • Pour créer une action de réécriture nommée act_redirect_query qui remplace le nom d’hôte du serveur HTTP par le nom du serveur interne, tapez :

    add rewrite action act_redirect_query REPLACE q #http .req.header (« Hôte ») .before_str (« .example.com ») ‘‘“Web » + http.req.url.query.value (« serveur ») #

  • Pour créer une stratégie de réécriture nommée pol_redirect_query, tapez les commandes suivantes à l’invite de commandes Citrix ADC. Cette stratégie détecte les connexions, au serveur Web, qui contiennent une chaîne de requête. N’appliquez pas cette stratégie aux connexions qui ne contiennent pas de chaîne de requête :

    add rewrite policy pol_redirect_query q#http.req.header(“Host”).eq(“www.example.com”) && http.req.url.contains(“?”)’ act_redirect_query#

  • Liez votre nouvelle stratégie à l’échelle mondiale.

Étant donné que cette stratégie de réécriture est hautement spécifique et doit être exécutée avant toute autre stratégie de réécriture, il est conseillé de lui attribuer une priorité élevée. Si vous lui attribuez une priorité de 1, elle sera évaluée en premier.

Réécriture d’HTTP en HTTPS

Cet exemple décrit comment réécrire les réponses du serveur Web pour rechercher toutes les URL commençant par la chaîne « http » et remplacer cette chaîne par « https ». Vous pouvez l’utiliser pour éviter d’avoir à mettre à jour des pages Web après avoir déplacé un serveur de HTTP vers HTTPS.

Pour rediriger les URL HTTP vers HTTPS à l’aide de l’interface de ligne de commande

  • Pour créer une action de réécriture nommée act_replace_http_with_https qui remplace toutes les instances de la chaîne « http » par la chaîne « https », entrez la commande suivante :

    add rewrite action act_replace_http_with_https replace_all ‘http.res.body (100) ‘’ “https” ‘-pattern http

  • Pour créer une stratégie de réécriture nommée pol_replace_http_with_https qui détecte les connexions au serveur Web, entrez la commande suivante :

    add rewrite policy pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE

  • Liez votre nouvelle stratégie à l’échelle mondiale.

Pour résoudre cette opération de réécriture, reportez-vous à la section “Étude de cas : réécriture de la stratégie pour la conversion des liens HTTP en HTTPS ne fonctionne pas.”

Suppression des en-têtes indésirables

Cet exemple explique comment utiliser une stratégie de réécriture pour supprimer les en-têtes indésirables. Plus précisément, l’exemple montre comment supprimer les en-têtes suivants :

  • Accepter l’en-tête Encodage. La suppression de l’en-tête Accept Encoding des réponses HTTP empêche la compression de la réponse.
  • En-tête Emplacement du contenu. La suppression de l’en-tête Content Location des réponses HTTP empêche votre serveur de fournir à un pirate des informations pouvant permettre une violation de la sécurité.

Pour supprimer des en-têtes des réponses HTTP, vous créez une action de réécriture et une stratégie de réécriture, et vous liez la stratégie globalement.

Pour créer l’action Réécriture appropriée à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez l’une des commandes suivantes pour supprimer l’en-tête Accepter le codage et empêcher la compression des réponses, ou supprimer l’en-tête Content Location :

  • add rewrite action “act_remove-ae” delete_http_header “Accept-Encoding”
  • add rewrite action “act_remove-cl” delete_http_header “Content-Location”

Pour créer la stratégie de réécriture appropriée à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez l’une des commandes suivantes pour supprimer l’en-tête Accepter l’encodage ou l’en-tête Content Location :

  • add rewrite policy “pol_remove-ae” true “act_remove-ae”
  • add rewrite policy “pol_remove-cl” true “act_remove-cl”

Pour lier la stratégie globalement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez l’une des commandes suivantes, selon le cas, pour lier globalement la stratégie que vous avez créée :

  • bind rewrite global pol_remove_ae 100
  • bind rewrite global pol_remove_cl 200

Réduction des redirections de serveur Web

Cet exemple explique comment utiliser une stratégie de réécriture pour modifier les connexions à votre page d’accueil et à d’autres URL qui se terminent par une barre oblique (/) vers la page d’index par défaut de votre serveur, empêchant les redirections et réduisant la charge sur votre serveur.

Pour modifier les requêtes HTTP de niveau répertoire afin d’inclure la page d’accueil par défaut à l’aide de la ligne de commande

  • Pour créer une action de réécriture nommée action-default-homepage qui modifie les URL se terminant par une barre oblique pour inclure l’index.html de la page d’accueil par défaut, tapez :

    add rewrite action “action-default-homepage” replace q#http.req.url.path “/” “/index.html”#

  • Pour créer une stratégie de réécriture nommée policy-default-page d’accueil qui détecte les connexions à votre page d’accueil et applique votre nouvelle action, tapez :

    add rewrite policy “policy-default-homepage” q#http.req.url.path.EQ(“/”) “action-default-homepage”#

  • Associez globalement votre nouvelle stratégie pour la mettre en œuvre.

Masquage de l’en-tête du serveur

Cet exemple explique comment utiliser une stratégie de réécriture pour masquer les informations de l’en-tête du serveur dans les réponses HTTP de votre serveur Web. Cet en-tête contient des informations que les pirates peuvent utiliser pour compromettre votre site Web. Bien que le masquage de l’en-tête n’empêche pas un pirate qualifié de trouver des informations sur votre serveur, cela rendra le piratage de votre serveur Web plus difficile et encouragera les pirates à choisir des cibles moins bien protégées.

Pour masquer l’en-tête du serveur dans les réponses de la ligne de commande

  1. Pour créer une action de réécriture nommée act_mask-server qui remplace le contenu de l’en-tête du serveur par une chaîne non informative, tapez :

    add rewrite action “act_mask-server” replace “http.RES.HEADER(\“Server\”)” “\“Web Server 1.0\””

  2. Pour créer une stratégie de réécriture nommée pol_mask-server qui détecte toutes les connexions, tapez :

    add rewrite policy “pol_mask-server” true “act_mask-server”

  3. Associez globalement votre nouvelle stratégie pour la mettre en œuvre.

Comment convertir du texte brut en chaîne encodée URL et vice-versa

Les expressions suivantes convertissent le texte brut en chaîne codée URL et vice-versa :

  1. URL_RESERVED_CHARS_SAFE (chaîne à URL ENCODED).

    Exemple

    ("abc def&123").URL_RESERVED_CHARS_SAFE
    Output will be
    “abc%20def%26123” which is url encoded.
    
  2. SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE. (URL ENCODED à la chaîne)

    Exemple :

    ("abc%20def%26123").SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE
    Output will be
    “abc def&123”