Exemples de stratégies de stratégie avancées 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 effectuer plusieurs 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 à l’échelle mondiale.
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 de texte brut en chaîne codée par URL et de la manière inverse
Pour plus d’informations sur les commandes et les descriptions de syntaxe, consultez la page Réécriture de la référence des commandes .
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 commande NetScaler, 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
- Accédez à AppExpert > Réécrire > Actions.
- Dans le volet de détails, cliquez sur Ajouter.
- Dans la boîte de dialogue Créer une action de réécriture, entrez le nom act_external_to_internal.
- Pour remplacer le nom d’hôte du serveur HTTP par le nom du serveur interne, choisissez Remplacer dans la zone de liste Type.
- Dans le champ Nom de l’en-tête, tapez Hôte.
- Dans l’expression chaîne d’un champ de texte de remplacement, saisissez le nom d’hôte interne de votre serveur Web.
- Cliquez sur Create, puis cliquez sur Close.
- Dans le volet de navigation, cliquez sur Stratégies.
- Dans le volet de détails, cliquez sur Ajouter.
- Dans le champ Nom, tapez pol_external_to_internal. Cette stratégie détecte les connexions au serveur Web.
- Dans le menu déroulant Action, choisissez l’action act_external_to_internal.
- Dans l’éditeur d’expressions, construisez l’expression suivante :
HTTP.REQ.HOSTNAME.SERVER.EQ("www.example.com")
<!--NeedCopy-->
- 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 ? serveur=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, puis 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 l’interface de 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 http.req.header("Host").before_str(".example.com") '"Web" + http.req.url.query.value("server")'
- Pour créer une stratégie de réécriture nommée pol_redirect_query, tapez les commandes suivantes à l’invite de commande NetScaler. 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 '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 très 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 est évaluée en premier.
Réécriture d’HTTP en HTTPS
Cet exemple explique 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 de devoir 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"' -search text("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 : Stratégie de réécriture 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 :
- Acceptez l’en-tête Encoding. 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 susceptibles de permettre une faille de 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 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 et empêcher la compression des réponses ou supprimer l’en-tête Emplacement de contenu :
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 Emplacement de contenu :
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, le cas échéant, 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 au niveau du répertoire afin d’inclure la page d’accueil par défaut à l’aide de l’interface de ligne de commande
- Pour créer une action de réécriture nommée action-default-homepage qui modifie les URL qui se terminent par une barre oblique pour inclure la page d’accueil par défaut index.html, tapez :
add rewrite action "action-default-homepage" replace http.req.url.path "\"/index.html\""
- Pour créer une stratégie de réécriture nommée policy-default-homepage 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"\#
- Liez 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 contenues dans 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 hacker qualifié de trouver des informations sur votre serveur, cela rend le piratage de votre serveur Web plus difficile et encourage les pirates à choisir des cibles moins protégées.
Pour masquer l’en-tête du serveur dans les réponses de l’interface de ligne de commande
- Pour créer une action de réécriture nommée act_mask-server qui remplace le contenu de l’en-tête Server par une chaîne non informative, tapez :
add rewrite action "act_mask-server" replace "http.RES.HEADER(\"Server\")" "\"Web Server 1.0\""
- 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"
- Liez globalement votre nouvelle stratégie pour la mettre en œuvre.
Comment convertir du texte brut en chaîne encodée par URL et de la manière inverse
Les expressions suivantes convertissent le texte brut en chaîne encodée par URL et de la manière inverse :
- URL_RESERVED_CHARS_SAFE (chaîne vers URL ENCODED).
Exemple :
("abc def&123").URL_RESERVED_CHARS_SAFE
Output will be
“abc%20def%26123” which is url encoded.
<!--NeedCopy-->
- SET_TEXT_MODE (URLENCODED) .DECODE_USING_TEXT_MODE. (URL ENCODÉE en chaîne)
Exemple :
("abc%20def%26123").SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE
Output will be
“abc def&123”
<!--NeedCopy-->