Supprimer les jsessionid dans les url et pretty faces pour le référencement
Le 11/12/2013 Par Pierre Liseronjavajeeurljsessionidpretty facesréférencement
Le problème des jsessionid dans les urls
Comportement des jsessionid
Ceci n’est pas un bug mais le fonctionnement de base de JEE qui crée une session. Ne sachant pas si le navigateur du client possède la fonctionnalité des cookies, java préfère passer la session dans l’url.
Problème pour le référencement
Pour le référencement ceci peut être panélisable car ceci crée des urls peu référencable. Afin de maximiser le référencement, il est donc préférable de supprimer la variable jsessionid des url générées par le serveur.
Pour réaliser cette suppression de paramètre, il existe une solution simple à partir d’un filter java.
La solution
Pour ce faire, il suffit de créer un filter comme expliqué dans l’excellent post suivant:
http://java.dzone.com/articles/java-jsessionid-harmful
Le filter java
Créer une classe java suivante:
public class URLSessionFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (!(request instanceof HttpServletRequest)) {
chain.doFilter(request, response);
return;
}
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(
httpResponse) {
public String encodeRedirectUrl(String url) {
return url;
}
public String encodeRedirectURL(String url) {
return url;
}
public String encodeUrl(String url) {
return url;
}
public String encodeURL(String url) {
return url;
}
};
chain.doFilter(request, wrappedResponse);
}
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
}
Le fichier web.xml
Et renseigner ce filter dans votre web.xml:
<filter>
<filter-name>URLSessionFilter</filter-name>
<filter-class>com.framework.filter.URLSessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>URLSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
C’est tout! Le paramètre jsessionid disparait tout simplement des urls lors de la première connexion.
Filter et pretty faces
Attention néanmoins si vous utiliser pretty faces, il est important de placer ce filter avant le filter de prettry faces, sinon pretty-faces sera comme désactivé.
Sommaire
Le problème des jsessionid dans les urls
Comportement des jsessionid
Problème pour le référencement
La solution
Le filter java
Le fichier web.xml
Filter et pretty faces