Partager via


Importation de règles Apache mod_rewrite

par Ruslan Yakushev

Introduction

Le module de réécriture d’URL dans IIS 7 et versions ultérieures offre une fonctionnalité d’importation qui simplifie considérablement le processus de conversion des règles Apache mod_rewrite en règles de réécriture d’URL IIS. Dans cette procédure pas à pas, vous utilisez la fonctionnalité Importer des règles fournies dans le module de réécriture d’URL pour importer plusieurs règles mod_rewrite dans un fichier de configuration IIS. Si vous n’avez pas encore téléchargé le module de réécriture d’URL, vous pouvez le faire sur https://www.iis.net/downloads/microsoft/url-rewrite.

Configurer un scénario de procédure pas à pas

Pour voir comment convertir des règles mod_rewrite et vérifier que les règles converties fonctionnent correctement, vous implémentez le scénario courant d’application de noms d’hôtes canoniques pour un site web. Dans cet exemple, vous forcez l’utilisation de www.mysite.com au lieu de mysite.com, de sorte que quand une demande qui utilise un nom d’hôte autre que www.mysite.com est envoyée, vous pouvez rediriger la demande vers un nom d’hôte canonique.

  1. Démarrez le Gestionnaire IIS, puis cliquez sur Site web par défaut.

  2. Dans le volet Actions, cliquez sur Liaisons et ajoutez une nouvelle liaison http pour le port 8088.

    Capture d’écran de la boîte de dialogue Liaisons de site après avoir cliqué sur Liaisons sous Modifier le site dans le volet Actions.Figure 1 : Ajouter une nouvelle liaison

  3. Dans le Bloc-notes, ouvrez %SystemDrive%\windows\system32\drivers\etc\hosts et ajoutez les deux lignes suivantes à la fin du fichier :

    127.0.0.1 www_mysite_com
    127.0.0.1 mysite_com
    

    Notez que vous utilisez « _ » au lieu de « . » pour les séparateurs de domaine. Cela permet d’empêcher le navigateur web d’essayer de résoudre le nom de domaine avec un serveur DNS (Domain Name System).

  4. Enregistrez le fichier hosts.

  5. Vérifiez que les noms d’hôtes ont été correctement configurés en ouvrant un navigateur web et en accédant aux sites http://www_mysite_com/iisstart.htm et http://mysite_com/iisstart.htm.

Convertir des règles mod_rewrite

Les règles Apache mod_rewrite à utiliser pour appliquer des noms d’hôtes canoniques sont les suivantes :

#For sites running on a port other than 80:
RewriteCond %{HTTP_HOST}   !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://www_mysite_com:%{SERVER_PORT}/$1 [L,R]

#And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www_mysite_com/$1 [L,R]

Pour convertir ces règles au format propre à la réécriture d’URL IIS :

  1. Démarrez le Gestionnaire IIS.

  2. À gauche, dans le volet Connexions, sélectionnez Site web par défaut.

  3. À droite, dans la vue des fonctionnalités, cliquez sur Réécriture d’URL.

    Capture d’écran du volet Accueil du site web par défaut avec la réécriture U R L sélectionnée.

    Figure 2 : Cliquer sur Réécriture d’URL

  4. À droite, dans le volet Actions, cliquez sur Importer des règles.

  5. Copiez les exemples de règles mod_rewrite ci-dessus et collez-les dans la zone de texte Règles de réécriture.

    Capture d’écran du volet Importer un trait de soulignement mod réécriture des règles avec un ensemble de règles de réécriture et un ensemble de règles converties.

    Figure 3 : Règles à importer

  6. L’onglet d’arborescence de la zone Règles converties affiche instantanément le résultat de la conversion. Vous pouvez également cliquer sur l’onglet Vue XML pour voir comment les règles sont stockées dans le fichier Web.config.

    Capture d’écran du basculement entre l’arborescence et la vue X M L dans la section Règles converties.

    Figure 4 : Règles converties

    Si vous revenez à l’arborescence et sélectionnez un nœud, la directive de règle mod_rewrite correspondante dans la zone de texte Règles de réécriture est mise en surbrillance.

    Capture d’écran d’un nœud sélectionné dans l’arborescence des règles converties.

    Figure 5 : Arborescence

    Notez que pendant la conversion, les règles reçoivent des noms par défaut. Pour remplacer les noms par défaut par un nom plus significatif, sélectionnez une règle dans l’arborescence, cliquez dessus avec le bouton droit, puis sélectionnez Renommer dans le menu contextuel.

    Capture d’écran d’un clic droit sur une règle convertie pour renommer la règle.

    Figure 6 : Renommer

    Changez le nom de la première règle ImportedRule1 en Rediriger vers www_mysite_com:non-80. Changez le nom de la deuxième règle ImportedRule2 en Rediriger vers www_mysite_com:80.

    Dans le volet Actions, cliquez sur Appliquer pour enregistrer les règles converties dans le fichier Web.config, puis sur Retour aux règles.

    Capture d’écran du volet Actions avec Appliquer, Annuler et Revenir aux règles mis en évidence.

    Figure 7 : Retour aux règles

Tester les règles converties

Pour vérifier que les règles importées à partir du format mod_rewrite fonctionnent correctement, ouvrez un navigateur web et accédez à une des URL suivantes :

  • http://localhost/iisstart.htm
  • http://mysite_com/iisstart.htm

Dans les deux cas, le navigateur web est redirigé vers http://www_mysite_com/iisstart.htm.

Par ailleurs, si vous essayez une de ces URL :

  • http://localhost:8088/iisstart.htm
  • http://mysite_com:8088/iisstart.htm

le navigateur web est redirigé vers http://www_mysite_com:8088/iisstart.htm.

Notez que les règles importées à partir de mod_rewrite ont activé l’application des noms d’hôtes canoniques pour un site web. Une recherche Bing révèle d’autres exemples de règles Apache mod_rewrite.

Exclusion de responsabilité

IMPORTANT : Le module de réécriture d’URL tente de convertir des règles Apache mod_rewrite en règles de réécriture d’URL IIS qui fonctionnent de la même manière. Toutefois, les règles mod_rewrite ne peuvent pas toutes être converties en raison de différences architecturales entre Apache et IIS. Nous vous recommandons vivement d’étudier l’ensemble de règles mod_rewrite pour bien comprendre ses fonctionnalités avant de commencer le processus de conversion. Ensuite, après la conversion en règles de réécriture d’URL IIS, passez en revue et testez le résultat de la conversion pour vérifier que l’ensemble de règles de réécriture IIS correspondant fournit la même logique de réécriture d’URL.

Notez que seules les règles qui suivent la syntaxe Apache mod_rewrite peuvent être converties. Les autres formats de règles de réécriture (par exemple, ISAPI_Rewrite, Ionic ISAPI Rewrite, IISRewrite et autres) ne sont pas reconnus ou sont convertis de manière incorrecte.