L'URL rewriting en Java

Les usages de la réécriture d’URL sont multiples : optimisation du référencement, simplification d’adresse, gestion de session, etc. Le point sur la mise en œuvre de cette technique sur la plateforme Java J2EE.

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, etc. Le point sur la mise en oeuvre de cette technique sur la plateforme Java J2EE.

L'URL rewriting permet de transformer une URL du type :
http://www.netapsys.fr/news/showarticle.do?id=15
en
http://www.netapsys.fr/url_rewriting_java.html

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.

URL Rewrite Filter
Il est également aisé de le mettre en oeuvre sur une application Java J2EE. Le principe consiste à utiliser un filtre (javax.servlet.Filter) 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 http://tuckey.org/urlrewrite/. Sa mise en oeuvre n'impacte en rien l'application dans laquelle il s'intègre et se fait en quelques étapes :

1. Import de la librairie dans l'application

urlrewrite-2.6.0.jar dans le dossier WEB-INFlib

2. Paramétrage du filtre dans le fichier web.xml
<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>

3. Ajout du fichier de configuration du filtre urlrewrite.xml dans le dossier WEB-INF
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 web.xml):
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/urlrewrite.xml</param-value>
</init-param>

4. Paramétrage des règles de réécriture d'url dans le fichier de paramétrage urlrewrite.xml
<?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>

Dans cet exemple, la première règle indique au filtre que lorsque l'URL demandée commence par ^/news/showarticle.do?id=15 (tag <from>), il doit transmettre la requête au serveur sur l'URL /url_rewriting_java.html.

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 urlrewrite.xml.
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.

Pour en savoir plus :

- Téléchargement de l'URL Rewrite Filter
- Documentation complète de l'URL Rewrite Filter