Article publié le dimanche 26 novembre 2006 par yhebert.
Cet article est classé dans les catégories « Internet et Intranet, JAVA, Référencement »
La technique de l'URL rewriting (ou réécriture d'URL) permet une manipulation de l'URL « à la volée », lors de son appel par l'utilisateur. Les usages sont multiples : optimisation du référencement, simplification d'URL, gestion de la session, ...<br />
Cela permet de transformer une URL du type
<i><a xhref="http://www.netapsys.fr/news/showarticle.do?id=15" target="_blank">http://www.netapsys.fr/news/showarticle.do?id=15</a></i>
en
<i><a xhref="http://www.netapsys.fr/url_rewriting_java.html" target="_blank">http://www.netapsys.fr/url_rewriting_java.html</a></i>
L'adresse est ainsi plus facile à retenir pour un internaute mais également pour les moteurs de recherche. Nombres d'entre eux ne prennent effectivement pas en compte les pages dynamiques composées de paramètres mais ils apportent par contre une importance significative aux mots clés présents dans l'URL. Cette technique permet également de s'affranchir de l'implémentation technique du site et de conserver le référencement en cas de modification de son architecture.
Le monde Apache dispose d'un module puissant pour gérer ces manipulations : mod_rewrite.
<b>URL Rewrite Filter</b>
Il est également aisé de le mettre en oeuvre sur une application Java J2EE. Le principe consiste à utiliser un filtre (<i>javax.servlet.Filter</i>) qui intercepte chaque appel au serveur web, manipule l'URL demandée pour la faire correspondre à l'URL connue par le serveur, et relance finalement le cycle de vie initial de la requête.
Il existe des filtres open source qu'il suffit d'intégrer à votre application J2EE. « URL Rewrite Filter » est par exemple disponible sous License GPL. Il est disponible à l'adresse <a xhref="http://tuckey.org/urlrewrite/" target="_blank">http://tuckey.org/urlrewrite/</a>.
Sa mise en oeuvre n'impacte en rien l'application dans laquelle il s'intègre et se fait en quelques étapes :
<b>1. Import de la librairie dans l'application : </b>« <i>urlrewrite-2.6.0.jar</i> » dans le dossier « <i>WEB-INF\lib</i> »
<b>2. Paramétrage du filtre dans le fichier « web.xml » :</b>
<i>
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</i>
<b>3. Ajout du fichier de configuration du filtre</b> (« <i>urlrewrite.xml</i> ») dans le dossier « <i>WEB-INF</i> ».
L'emplacement et le nom de ce fichier peuvent être modifiés à l'aide de l'instruction suivante dans le paramétrage du filtre (fichier « <i>web.xml</i> ») :
<i>
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/urlrewrite.xml</param-value>
</init-param>
</i>
<b>4. Paramétrage des règles de réécriture d'url dans le fichier de paramétrage « urlrewrite.xml » :</b>
<i>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
<rule>
<from>^/news/showarticle.do?id=15</from>
<to>/url_rewriting_java.html</to>
</rule>
<rule>
<from>^/societe.html</from>
<to type="forward">/quisommesnous/index.html</to>
</rule>
<rule>
<from>^/offre.html</from>
<to type="forward">/notreoffre/index.html</to>
</rule>
</urlrewrite>
</i>
Dans cet exemple, la première règle indique au filtre que lorsque l'URL demandée commence par « <i>^/news/showarticle.do?id=15</i> » (tag <i><from></i>), il doit transmettre la requête au serveur sur l'URL « <i>/url_rewriting_java.html</i> » (tag <i><to></i>).
Tout comme mod_rewrite, URL Rewrite Filter offre des fonctionnalités très poussées :
- règles complexes basées sur des expressions régulières ;
- gestion des wildcard ;
- gestion des conditions dynamiques basées sur la date, les paramètres de la requête, des attributs de session, ...
- réécriture des URLs générées par un appel à la méthode response.encodeURL() ;
- appel direct d'une méthode ;
- mécanisme de génération de la documentation associée au fichier de paramétrage « <i>urlrewrite.xml</i> ».
Il est également possible de le faire évoluer et de s'affranchir du fichier de paramétrage en s'appuyant sur une configuration en base de données. Il est alors envisageable de permettre à un utilisateur de gérer dynamiquement les règles, en fonction des pages créées, par exemple dans une application de gestion de contenu.
<b>Pour en savoir plus :</b>
- Téléchargement de l'URL Rewrite Filter : <a xhref="http://tuckey.org/urlrewrite/#download" target="_blank">http://tuckey.org/urlrewrite/#download</a>
- Documentation complète de l'URL Rewrite Filter : <a xhref="http://tuckey.org/urlrewrite/manual/3.0/" target="_blank">http://tuckey.org/urlrewrite/manual/3.0/</a>
- Netapsys : <a xhref="http://www.netapsys.fr" target="_blank">http://www.netapsys.fr</a> / <a xhref="mailto:contact@netapsys.fr">contact@netapsys.fr</a>
Sources de l'information : Netapsys - Ingénierie informatique : http://www.netapsys.fr
Plus d'informations :