Utilisation du module de réécriture d'URL

Auteur : Ruslan Yakushev

A propos du module de réécriture d'URL

Le module de réécriture d'URL Microsoft 2.0 pour IIS 7 et les versions supérieures permet aux administrateurs IIS de créer de puissantes règles personnalisées pour mapper les URL de requête en URL conviviales qui sont plus faciles à mémoriser pour les utilisateurs et plus faciles à trouver pour les moteurs de recherche. Vous pouvez utiliser le module de réécriture d'URL pour effectuer des tâches de manipulation d'URL :

  • Définissez des règles puissantes pour transformer des URL complexes en adresses Web simples et cohérentes.
  • Remplacez facilement les URL d'application Web pour produire des résultats conviviaux des utilisateurs et des moteurs de recherche.
  • Réécrivez des URL basées sur des en-têtes HTTP et des variables de serveur IIS.
  • En outre, les administrateurs Web peuvent effectuer des redirections, envoyer des réponses personnalisées ou arrêter des requêtes HTTP en fonction de la logique exprimée dans les règles de réécriture.
  • Contrôlez l'accès au contenu du site Web en fonction des segments d'URL ou des métadonnées de requête.

Le module de réécriture d'URL est disponible en tant que téléchargement que vous pouvez installer sur votre propre serveur IIS et sur la plateforme cloud des sites Web Azure de Microsoft.

Fonctionnalités d'URL Rewrite 2.0

Le module de réécriture d'URL Microsoft 2.0 inclut les fonctionnalités clés suivantes :

  • Moteur de réécriture d'URL basée sur des règles. Les règles de réécriture définissent la logique utilisée pour analyser les URL de demande et les mapper en URL de réécriture lorsque l'URL de demande correspond à une règle définie. Les administrateurs de serveur Web et de site peuvent utiliser des ensembles de règles de réécriture pour définir la logique de réécriture d'URL.
  • Critères spéciaux d'expression régulière. Les règles de réécriture peuvent utiliser la syntaxe d'expression régulière pour la correspondance de modèles tel que défini dans ECMA-262.
  • Critères spéciaux à caractère générique. Les règles de réécriture peuvent utiliser la syntaxe de critères spéciaux à caractère générique.
  • Règles de réécriture globale et distribuée. La réécriture d'URL utilise des règles globales pour définir la logique de réécriture d'URL à l'échelle du serveur. Ces règles sont définies dans le fichier applicationHost.config et remplacent les règles configurées à des niveaux inférieurs dans la hiérarchie de configuration. Le module utilise également des règles distribuées pour définir une logique de réécriture d'URL spécifique à une étendue de configuration particulière. Ce type de règle peut être défini sur n'importe quel niveau de configuration à l'aide de fichiers Web.config.
  • Accès aux variables de serveur et aux en-têtes HTTP. Les variables de serveur et les en-têtes HTTP fournissent des informations supplémentaires sur les requêtes HTTP actuelles. Ces informations peuvent être utilisées pour configurer des règles de réécriture ou pour composer l'URL de sortie.
  • Différentes actions de règle. Plutôt que de réécrire une URL, une règle peut effectuer d'autres actions, telles qu'une redirection HTTP, l'abandon de la requête ou l'envoi d'un code d'état personnalisé aux clients HTTP.
  • Prise en charge du mode noyau IIS et de la mise en cache de sortie en mode utilisateur. La mise en cache des sorties IIS offre des améliorations significatives des performances pour les applications web. Le module de réécriture d'URL est entièrement compatible avec les deux types de mise en cache de sortie. Cela signifie qu'il est possible de mettre en cache en toute sécurité les réponses des URL réécrites, et d'améliorer ainsi les performances des applications Web qui s'appuient sur la réécriture d'URL.
  • Fonctions de manipulation de chaînes. Les fonctions de manipulation de chaîne prédéfinies peuvent être utilisées pour convertir des URL en minuscules et pour effectuer l'encodage et le décodage d'URL.
  • Tables de réécriture. Une carte de réécriture est une collection arbitraire de paires nom-valeur. Vous pouvez utiliser un mappage de réécriture dans des règles de réécriture pour générer l'URL de substitution. Les cartes de réécriture sont particulièrement utiles lorsque vous disposez d'un grand ensemble de règles de réécriture, qui utilisent toutes des chaînes statiques (c'est-à-dire qu'il n'existe aucuns critères spéciaux utilisés). Dans ce cas, plutôt que de définir un grand nombre de règles de réécriture simples, vous pouvez placer tous les mappages entre elles dans la carte de réécriture en utilisant l'URL d'entrée comme clé et l'URL de substitution comme valeur. Vous pouvez ensuite avoir une règle de réécriture qui référence le mappage de réécriture pour rechercher l'URL de substitution en fonction de l'URL d'entrée.
  • Support de traçage des requêtes échouées. Le traçage des requêtes ayant échoué IIS peut être utilisé pour résoudre les erreurs liées à la réécriture d’URL.
  • Modèles de règle Un modèle de règle est une extension pour l'interface utilisateur du module de réécriture d'URL qui simplifie la création de règles de réécriture pour une tâche particulière. Le module comprend 3 modèles de règle et prend également en charge le branchement dans un certain nombre de modèles personnalisés.
  • Interface utilisateur (UI) permettant de tester les modèles d'expression régulière et de caractères génériques. Une interface utilisateur permettant de tester les modèles de règles est fournie avec le module. À l'aide de l'interface utilisateur, vous pouvez rapidement vérifier les résultats d'une expression régulière ou d'un caractère générique dans une règle de réécriture. Vous pouvez également utiliser l'interface utilisateur pour résoudre et déboguer des problèmes liés aux critères spéciaux.
  • Interface utilisateur pour la gestion des règles de réécriture et des mappages de réécriture. Les règles de réécriture et les mappages de réécriture peuvent être ajoutés, supprimés et modifiés à l'aide du module de réécriture d'URL de l'URL du Gestionnaire IIS.
  • Interface utilisateur pour l'importation des règles mod_rewrite. Le module de réécriture d'URL comprend une interface utilisateur permettant de convertir les règles de réécriture du format mod_rewrite au format IIS.

Où obtenir le module de réécriture d'URL ?

Pour plus d'informations, ou pour télécharger le module, consultez la page d'accueil de l'extension URL Rewrite.

Mise à niveau à partir de la version Go Live

Si vous avez déjà installé la version Go Live du module de réécriture d'URL, le package d'installation le mettra à jour avec la version 2.0 du module de réécriture d'URL. Toutes les règles de réécriture dans vos fichiers ApplicationHost.config et Web.config seront conservées.

mise à jour de ASP.NET

Le programme d'installation du module de réécriture d'URL inclut une mise à jour ASP.NET qui corrige les bogues ASP.NET spécifiques au module de réécriture d'URL. Plus précisément, la mise à jour contient des correctifs pour les bogues suivants :

  1. ~ L'opérateur du contrôle serveur Web ASP.NET est mal résolu lors de l'utilisation de l'URL Rewrite.
  2. La propriété ASP.NET SiteMap.CurrentNode renvoie null lorsque le plan du site contient des URL virtuelles.

La mise à jour n'est appliquée que si la machine sur laquelle le module de réécriture d'URL est installé dispose de la version 3.5 SP1 de .NET Framework ou d'une version ultérieure. Si vous installez la version requise de .NET Framework après avoir installé le module de réécriture d'URL, vous pourrez appliquer la mise à jour ASP.NET en exécutant le programme d'installation du module de réécriture d'URL. Ensuite, sélectionnez l'option Réparer dans la boîte de dialogue du programme d'installation.

Pour plus d'informations sur ces questions et d'autres problèmes ASP.NET liés à la réécriture d'URL, consultez URL Rewriting for ASP.NET Web Forms.

Utilisation du module

Ces articles présentent les fonctionnalités du module de réécriture d'URL. En outre, ils expliquent comment l'utiliser pour mettre en œuvre les scénarios de réécriture d'URL les plus courants.

Apprendre les principes de base

Références et conseils

Vidéo de la procédure pas à pas

Modifications depuis la version Go Live

Les ajouts, modifications et correctifs de bogues importants suivants ont été apportés au module de réécriture d'URL depuis la version Go Live :

  1. Ajout de fonctions de manipulation de chaîne UrlEncode et UrlDecode.
  2. Accès à une URL originale non chiffrée via la variable serveur UNENCODED_URL. Cette variable serveur contient désormais l'URL encodée originale, se présentant exactement telle qu'elle a été demandée par le navigateur web.
  3. Ajout de l'interface utilisateur pour la configuration des règles de réécriture pour le routage des Application Request Routing (ARR).
  4. Ajout de la prise en charge de la mise à niveau sur place à partir de la version Go Live du module de réécriture d'URL.
  5. Ajout de fonctionnalités pour nettoyer le cache interne afin d'éviter une utilisation excessive de la mémoire lors de la mise en cache des règles de réécriture.
  6. Correction d'un bogue lié à la réécriture des URL qui contiennent des caractères non ASCII.
  7. Correction d'un bogue dans le traitement des expressions régulières. Ces expressions étaient évaluées de manière inappropriée dans le cas de motifs insensibles à la casse.
  8. Inclus une mise à jour pour le module FastCGI IIS dans le package d'installation.
  9. Inclus une mise à jour pour System.Web.dll dans le package d'installation.
  10. Inclus une mise à jour pour la fonction IIS SetUri dans le package d'installation.

Problèmes connus

  1. Les règles mod_rewrite qui utilisent les variables de serveur REQUEST_URI peuvent ne pas fonctionner correctement lorsqu'elles sont importées à l'aide de la fonction URL Rewrite des règles d'importation. Pour corriger l'utilisation des règles importées, vous pouvez utiliser n'importe quel éditeur de texte pour ouvrir le fichier Web.config qui contient ces règles. Recherchez la section <rewrite>, puis, dans cette section, remplacez toutes les instances de la chaîne « {SCRIPT_NAME} » par la chaîne « {URL} ».
  2. L'authentification Digest ne peut pas être utilisée avec le module de réécriture d'URL.
  3. L'authentification ASP.NET Forms utilise l'URL réécrite pour la redirection. Par exemple, si l'URL demandée est « /article.htm » et que le module de réécriture d'URL réécrit l'URL en « /article.aspx », qui est protégé par l'authentification des formulaires, ASP.NET redirigera vers « /login.aspx?ReturnUrl=%2Farticle.aspx ».
  4. Le mode auto-détection dans l'authentification ASP.NET Forms utilise une URL réécrite pour la redirection. Par exemple, si l'URL demandée est « /article.htm » et que le module de réécriture d'URL réécrit l'URL en « /article.aspx », qui est protégé par l'authentification Forms, ASP.NET redirigera vers « /article.aspx?AspxAutoDetectCookieSupport=1 ».
  5. Le mode UseUri dans l'authentification ASP.NET Forms utilise l'URL réécrite pour la redirection. Par exemple, si l'URL demandée est « /article.htm » et que le module de réécriture d'URL réécrit l'URL en « /article.aspx », qui est protégé par l'authentification Forms, ASP.NET redirigera vers « /(S(vy2ebt45imfkmjwboow3l55))/article.aspx ».
  6. ASP.NET réécrit à l'URL d'origine lors de l'utilisation de l'authentification basée sur l'URI ou de l'état de session sans cookie. Par exemple, lorsqu'une requête est adressée à « /(S(vy2ebt45imfkmjwboow3l55))/article.htm » et que le module de réécriture d'URL réécrit « /article.htm » en « /article.aspx », ASP.NET réécrit l'URL en « /article.htm », ce qui peut entraîner l'erreur « 404 – Fichier non trouvé ».
  7. Le module IIS DefaultDocument peut rediriger vers une URL réécrite lorsque le module de réécriture d'URL réécrit vers un dossier. Par exemple, si l'URL de substitution dans une règle de réécriture est « /dossier1/dossier2 » et que ces dossiers existent dans le système de fichiers, et qu'un document par défaut est configuré, le module DefaultDocument redirigera les clients Web vers « /dossier1/dossier2/ », exposant ainsi l'URL réécrite. Pour éviter ce problème, utilisez « / » à la fin de l'URL de substitution lors de la réécriture dans un dossier, par exemple, « /folder1/folder2/ »