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 !
Billets relatifs
- Date sur deux chiffres en ASP
- Arrondir un chiffre en ASP
- Tutoriel création d'un réseau privé virtuel (VPN)
Bonjour, vous avez dit :
Justement je voudrais savoir quelle est cette ruse qui permet de dissocier les sites ?
Car avec un seul fichier http.ini, les sites mélangent les redirections.
Merci d'avance, cdt
Salut,
Personnellement j'utilise ISAPI Rewrite pour des sites de club hôteliers. Du coup je mettais mes urls sur la forme "hotel-*region*-***.html". Il te suffit d'ajouter une info dans ton url pour dissocier chacun de tes sites.
Après depuis peut-être qu'il existe sur ISAPI Rewrite une MAJ permettant d'utiliser plusieurs fichiers pour les règles. Je vais essayer de regarder.
ReBonjour, je tiens à te remercier pour ce tuto, car il m'a beaucoup dépanné,et a sauvé mon site, cette page vaut de l'or.
Cdt, et merci encore !
Pas de soucis. J'ai l'habitude de mettre en ligne des astuces sur lesquelles j'ai moi-même passé beaucoup de temps à résoudre.
Voila bonne continuations
Bonjour et merci opur ce tuto. J'ai une petite question tout de même.
Je n'ai que l'accès FTP à ma disposition sur mon site. Comment je peux savoir si Isapi est installé ?
Merci.
Qu'il soit installé ou non tu ne pourras malheureusement pas modifier le fichier de configuration pour ajouter des règles htaccess... A moins que la version "Full" (payante) soit installé mais dans ce cas je ne sais pas comment savoir si elle est installé. Je regarde si je peut trouver quelques informations
Bonjour,
Je veux optimiser mon site en référencement en y mettant des réecritures d'adresse.
Exemple : ficheproduit.asp?id=3 en confiture-poire.html
Le problème est que j'ai un hébergeur externe donc je ne peux pas installer ce que tu dis.
Y a t'il une solution à ce problème svp ?
Merci d'avance de ton aide
Salut,
Malheureusement non je n'ai pas trouvé d'alternative. Tu peut peut-être demandé à ton administrateur / hébergeur de mettre en place cette fonctionnalité ?
Bonjour,
J'ai téléphoné à l'hébergeur 1&1 qui m'a dit que c'était possible mais elle ne me donne pas d'explications ni d'aide sur le comment faire.
J'ai créé un fichier testfiche.asp dans un répertoire fr et j'ai créé un web.config sous ce répertoire avec cette ligne dedans RewriteRule /testfiche.html /testfiche.asp
Mais quand j'appelle testfiche.html ça ne me redirige pas vers testfiche.asp ?
Je ne comprends pas comment je dois paramétrer la chose, merci de votre aide.
Loulou
Donne le code de ton fichier web.config je vais regarder un peu !
Tu as bien type=Rewrite dans la balise action ?
Non, j'ai pris le web.config qui existait et j'ai ajouté l'instruction RewriteRule
SUrement as du tout ça alors, voila le contenu de mon fichier :
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<customErrors mode="On" />
RewriteRule /testfiche.html /testfiche.asp
</system.web>
</configuration>
Merci de ton aide.
Ah oui en effet. Regarde cette page.
En gros ça donne ça (pas testé)