Définition des en-têtes de requête HTTP et des variables de serveur IIS

Auteur : Ruslan Yakushev

Cette section de la documentation s’applique au module de réécriture d’URL version 2.0 pour IIS 7.

Cette procédure pas à pas vous guide tout au long de l’utilisation du module de réécriture d’URL v 2.0 pour définir des en-têtes de requête HTTP et des variables de serveur IIS.

Prérequis

Cette procédure pas à pas nécessite les prérequis suivants :

  1. IIS 7.0 ou version ultérieure avec ASP.NET service de rôle activé
  2. Module de réécriture d’URL 2.0 installé.

Configuration d’un scénario de procédure pas à pas

Pour montrer comment utiliser le module de réécriture d’URL 2.0 pour définir des en-têtes HTTP et des variables de serveur IIS, nous allons implémenter un scénario dans lequel l’en-tête cookie HTTP sur la requête est défini en fonction de l’URL demandée. Par exemple, supposons que vous disposez d’une application web qui sert des pages web localisées. L’application web détermine la langue de la réponse en fonction du cookie HTTP dans la requête. Le problème avec cette approche est que les moteurs de recherche n’indexent pas le contenu localisé de cette application, car les analyseurs de moteur de recherche n’utilisent pas de cookies HTTP et, par conséquent, seuls le contenu dans la langue par défaut sera servi par l’application web. Pour résoudre ce problème, vous décidez d’ajouter des informations sur la langue dans le cadre de l’URL, par exemple, http://www.contoso.com/default.aspxpuis utilisez le module de réécriture d’URL 2.0 pour définir le cookie attendu par l’application web afin de déterminer la langue de la réponse. En outre, vous souhaitez définir une autre variable de serveur appelée ORIGINAL_URI qui contiendra la chaîne d’URI demandée à l’origine.

Pour configurer le scénario de procédure pas à pas, copiez le code ASP.NET suivant et placez-le dans le %SystemDrive%\inetpub\wwwroot\ dossier dans un fichier appelé language.aspx :

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>URL Rewrite Module v2 Test - Setting Server Variables</title>
</head>
<body>
 <h1>Setting HTTP request header and a server variable with URL Rewrite Module v2</h1>
 <p>The value of the Language cookie is <strong><%=( Request.Cookies["Language"] != null ) ? Request.Cookies["Language"].Value : "Cookie not set" %></strong></p>
 <p>The originally requested URI is <strong><%= HttpUtility.HtmlEncode( Request.ServerVariables["ORIGINAL_URI"] ) %></strong></p>
</body>
</html>

Après avoir copié ce fichier, accédez à http://localhost/language.aspx et vérifiez que la page s’affiche correctement dans un navigateur.

Création d’une règle de réécriture

Vous allez créer une règle de réécriture qui réécrit les URL au format suivant :

http://localhost/<language>/anyfile.aspx
sera réécrit comme suit :
http://localhost/anyfile.aspx

La règle de réécriture définit également deux variables de serveur IIS :

  • HTTP_COOKIE
  • ORIGINAL_URI

Vous allez créer une règle de réécriture à l’aide de l’interface utilisateur de réécriture d’URL dans le Gestionnaire IIS.

Ouvrez le Gestionnaire IIS, choisissez le « Site web par défaut » dans l’arborescence située à gauche, puis ouvrez la fonctionnalité « Réécriture d’URL » :

Screenshot of the I I S Manager's Default Web Site Home screen with a focus on the U R L Rewrite option.

Autoriser la modification des variables de serveur

Par défaut, les règles de réécriture distribuée (c’est-à-dire les règles définies pour des sites ou des applications web spécifiques) ne peuvent pas définir ou modifier une variable de serveur IIS, sauf si la variable de serveur est ajoutée à la liste « Autorisé ». Pour cette procédure pas à pas, vous devez ajouter les deux variables serveur suivantes à la liste « Variables de serveur autorisées » :

  • HTTP_COOKIE
  • ORIGINAL_URI

Remarque

la liste « Variables de serveur autorisées » n’est pas applicable aux règles globales, qui sont définies au niveau d’un serveur. Il n’est pas nécessaire d’ajouter une variable de serveur à la liste « Autorisé » si cette variable de serveur est définie à l’aide d’une règle de réécriture globale.

Sélectionnez « Afficher les variables du serveur... » action à partir du volet « Actions » :

Screenshot of the U R L Rewrite screen with a focus on the View Server Variables option in the Actions pane.

Utilisez l’action « Ajouter... » pour ajouter les variables de serveur HTTP_COOKIE et ORIGINAL_URI à la liste « Variables de serveur autorisées » :

Screenshot of the Add Server Variable dialog box with ORIGINAL underscore U R I entered as the Server variable name.

Une fois la liste « Variables de serveur autorisées » mise à jour, cliquez sur l’action « Revenir aux règles » pour revenir à l’affichage de liste des règles.

Définition de la carte de réécriture

L’étape suivante consiste à définir une carte de réécriture qui sera utilisée pour mapper la partie URL, représentant la langue à l’identificateur de paramètres régionaux qui sera enregistrée par la règle de réécriture dans l’en-tête de cookie HTTP.

Sélectionnez l’option « Afficher la réécriture Cartes... » action dans le volet « Actions » :

Screenshot of the U R L Rewrite screen with a focus on the View Rewrite Maps option in the Actions pane.

Cliquez sur « Ajouter une carte de réécriture ... » et spécifiez le nom de la carte en tant que « Langues » :

Screenshot of the Add Rewrite Map dialog box with Languages entered as the Rewrite map name.

Cette carte définit des mappages entre la partie URL qui représente une langue et l’identificateur de paramètres régionaux à utiliser lors de la définition du cookie de requête HTTP. Cliquez sur « Modifier la carte Paramètres... » action pour spécifier la valeur par défaut à utiliser lorsqu’aucun mappage n’est trouvé. Entrez « en_US » comme valeur par défaut :

Screenshot of the Edit Rewrite Map dialog box showing E N underscore U S as the default value to use when the key is not found in the map.

Fermez la boîte de dialogue, puis utilisez l’option « Ajouter une entrée de mappage ... » action pour ajouter les mappages suivants :

Valeur d’origine : Nouvelle valeur:
fr-fr fr_FR
de-de de_DE
ru-ru ru_RU

Définition de la règle de réécriture

Enfin, vous allez créer une règle de réécriture qui définit les variables de serveur à l’aide du mappage de réécriture défini précédemment.

Affichez la boîte de dialogue « Modifier la règle » en cliquant sur « Ajouter des règles ... » action dans la vue principale des fonctionnalités et sélection de la « règle vide » dans la catégorie « Règles de trafic entrant ». Entrez la configuration de la règle comme suit :

Screenshot of the Edit Inbound Rule screen showing the Name, Match U R L, Conditions, Server Variables, and Actions sections.

  • Nom de la règle : « définir des variables de serveur »

  • URL demandée : « Correspond au modèle »

  • En utilisant : « Expressions régulières »

  • Modèle : « ^([a-z]{2}-[a-z]{2})/(.*) »

  • Conditions :

    • Entrée : « {Langues :{R :1}} »
    • Type : « Correspond aux modèles »
    • Modèle
  • Action :

    • Type : « Réécrire »
    • URL de réécriture : « {R :2} »

Le modèle de la règle correspond à n’importe quel chemin d’URL qui contient le segment de langue (par exemple, http://www.contoso.com/de-de/default.aspx). Il capture également le segment de langue et le reste du chemin d’URL dans les références back-references de la règle, afin qu’ils puissent être réutilisés ultérieurement dans la règle. La condition de règle utilise le segment de langue précédemment capturé comme clé de recherche qui est passée à la carte de réécriture « Langues ». Le résultat de la recherche de carte est stocké dans la référence back-reference de la condition. L’action de règle réécrit l’URL pour ne pas contenir le segment de langue.

Développez les « Variables de serveur ... » et spécifiez les valeurs à utiliser pour définir les variables de serveur :

Screenshot of the Server Variables dialog box with H T T P underscore COOKIE and ORIGINAL underscore U R L entered in the Name field.

  • Nom : HTTP_COOKIE, Valeur : Language={C :1}
  • Nom : ORIGINAL_URI, Valeur : http://{HTTP_HOST}{REQUEST_URI}

Le cookie HTTP est défini à l’aide de la référence back-reference de condition, qui contient l’identificateur de paramètres régionaux obtenu à partir de la carte de réécriture « Langues ». La valeur de la variable de serveur ORIGINAL_URI est générée à l’aide des variables serveur {HTTP_HOST} et {REQUEST_URI}.

Cliquez sur « Ok » pour fermer la boîte de dialogue, puis cliquez sur « Appliquer » dans le volet « Actions » sur le côté droit pour enregistrer la règle.

Test de la règle

Pour tester que la règle définit correctement le cookie et une variable de serveur, ouvrez un navigateur web et demandez l’URL suivante :

http://localhost/fr-fr/language.aspx

Screenshot of the U R L Rewrite Module v 2 Test webpage with focus on the U R L bar, the Language cookie is set to F R underscore F R.

Vous devez voir que la règle de réécriture a défini le cookie « Language » conformément à l’URL demandée. En outre, la chaîne d’URL d’origine a été rendue accessible pour la page ASP.NET via la variable de serveur « ORIGINAL_URI ».