Url Rewriting en ASP avec ISAPI Rewrite
Tags : Asp, Url rewriting, Windows, Iis
La méthode permettant d'utiliser l'url rewriting sur un serveur IIS tournant sur Windows 2000 n'est pas une des plus simples !
Seulement dans un soucis de référencement et de sécurité vous pouvez être appelé à installer ce genre de module complémentaire, car rappelons-le, il est nativement impossible d'utiliser ce genre de service en ASP.
J'ai comme vous pouvez l'imaginer eu le besoin de l'url rewriting pour améliorer le référencement d'un site internet et chercher la meilleure solution, mais aussi des documentations (si possible en français) afin d'installer simplement et gratuitement ce type de service.
L'url rewriting permet comme son nom l'indique de "ré-écrire les adresse" de vos pages. Ainsi vous pouvez ajouter aisément des mots clés dans les adresses de page permettant ainsi d'augmenter considérablement le référencement de votre site sur les moteurs de recherche. Ainsi la page "http://www.monsite.com/fiche.php?id=1" pourra aussi être accessible via l'adresse "[...]/fiche-1-comment-creer-un-serveur-web.asp".
Voici un petit tutoriel afin de mettre en place ce système d'url rewriting sur un serveur Windows 2000.
Pour commencer, rendez-vous sur le site de helicontech afin de télécharger la librairie gratuite (Version Lite)
Petite présentation de ce filtre. Il a l'avantage d'être gratuit mais évidement ne permet pas d'être exploité à "fond". La principale regret est de ne pas pourvoir séparer le fichier contenant les règles de rewrite qui finalement peuvent être "mélangés" si vous avez plusieurs sites sur ce même serveur et souhaitez l'utiliser pour chacun d'entre eux. Mais c'est simple à mettre en place et vous pouvez utiliser des ruses pour dissocier chacun de vos sites.
Voici une capture permettant de vous situer l'installation du logiciel : (laissez les options par défaut)
Une fois l'installation terminé, rendez-vous sur le panneau de contrôle IIS. (Démarrer - Programmes - Outils d'administration - Gestionnaires des services Internet (IIS))
Sélectionnez ensuite le site internet sur lequel vous souhaitez utiliser ce module puis faite un clic droit, propriété et rendez vous dans l'onglet "Filtres ISAPI".
Vous devriez maintenant voir cette fenêtre...
Nous allons maintenant ajouter un filtre pour ce site. Ce filtre est la dll que le logiciel précédemment installé. Cliquez sur "Ajouter..." puis entrez un nom à votre filtre ("Url Rewriting" par exemple) et sélectionnez la dll. (Par défaut dans C:\Program Files\Helicon\ISAPI_Rewrite\ISAPI_Rewrite.dll)
Une fois avoir ajouté validé l'ajout de ce filtre, vous pouvez redémarrer le serveur IIS en cliquant sur Action puis "Redémarrer le serveur IIS".
Le service de rewriting est désormais installé sur votre site internet. Il ne vous reste plus qu'à créer vos règles pour vos url. Pour cela rendez-vous dans le dossier de la dll puis ouvrez le fichier "httpd.ini". Par défaut le contenu de votre fichier ressemble à ça :
[ISAPI_Rewrite] # Defend your computer from some worm attacks RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
La règle utilisé permet d'interdire l'exécution de certains fichiers sur votre site. Vous êtes libre de la laisser ou non mais la ligne "[ISAPI_Rewrite]" est obligatoire.
Pour tester si le module fonctionne correctement, vous pouvez utiliser la règle suivante :
# Permet de rediriger l'adresse index.html vers index.asp RewriteRule /index.html /index.asp [R]
Rendez-vous sur votre site internet en tapant l'adresse :
- http://www.monsite.fr/index.html (Vous ne devez pas avoir de page index.html sinon vous risquez d'avoir quelques soucis !)
Si le filtre est bien installé alors vous êtes automatiquement redirigés vers la page index.asp. Dans le cas contraire, vous avez surement raté ou mal effectué une étape.
Je vous donne aussi une petite règle pour créer des adresse ainsi qu'une petite astuce pour ajouter des règles sur un site déjà référencer.
Voici une règle permettant de transcrire les adresse de type "fiche-*id*-*description*.html" vers l'adresse "fiche.asp?id=*id*"
# Règle RewriteRule /fiche-([0-9]*)-([a-zA-Z0-9-]*)\.html /fiche.asp\?id=$1 [L]
Le site sur lequel je souhaitais utiliser l'url rewriting était déjà référencé dans les moteurs de recherche. Je voulais donc rediriger toutes les anciennes adresse vers les nouvelles "rewrités". Les variables serveurs m'aurait permises de récupérer l'adresse de la page courante et si elle possédait la chaine "fiche.asp" il me suffisait simplement de rediriger vers la nouvelle adresse de la page.
Seulement il semblerait que le filtre ISAPI pose quelques soucis avec les variables globales serveur.
Voici une petite solution très simple permettant de faire une redirection des anciennes pages de votre site vers ces nouvelles url ;
- Ajouter à la fin de votre règle (id=$1) dans mon exemple ce code : "&rw=1"
Désormais lorsque l'url "rewrité" est entré alors une seconde variable est passé en GET à notre fichier. C'est cette variable, si elle est défini ou non qui nous permettra de rediriger (ou pas) vers la nouvelle adresse. Voici un simple morceau de code à mettre en haut de votre page :
<% if Request.QueryString("rw") = 1 then Response.Redirect("fiche-1-titredemafiche.asp") end if
Bon rewriting à vous !