# rm-rf.es

URL Rewriting / Reescritura de URL en Tomcat

Normalmente cuando trabajamos con un servidor de aplicaciones Tomcat, jBOSS, etc tenemos por delante un servidor web Apache para todo lo relacionado con URL Rewriting/Reescritura de URL, funciones de Proxy, etc. ¿Qué pasa si queremos hacer el url-rewrite directamente en Tomcat sin un frontal web?

Tomcat por defecto no dispone de función de reescritura de URLs, es necesario instalar un filtro web Java llamado UrlRewriteFilter. Vamos a ver su instalación y configuración.

Descargamos el filtro:

# wget http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar

El filtro debe estar junto con el restro de .jar, en el caso de Debian lo movemos a la ruta donde están los jar de JAVA y hacemos un link simbólico en la ruta lib/ de tomcat. Si queréis lo podéis poner directamente en el lib/

# ls -l /usr/share/java/urlrewritefilter-4.0.3.jar
-rw-r--r-- 1 root root 177497 jul  2  2012 /usr/share/java/urlrewritefilter-4.0.3.jar

# ls -l /usr/share/tomcat7/lib/urlrewritefilter-4.0.3.jar
lrwxrwxrwx 1 root root 37 ago 20 10:02 /usr/share/tomcat7/lib/urlrewritefilter-4.0.3.jar -> ../../java/urlrewritefilter-4.0.3.jar

Ahora ya podemos configurar la aplicación que queremos que disponga del filtro URL Rewrite. Hay que modificar el fichero web.xml y añadir el filtro:

<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>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>FORWARD</dispatcher>
</filter-mapping>

Y por último creamos el fichero urlrewrite.xml en el mismo directorio que el web.xml y en él configuramos los filtros que estimemos oportunos. En este caso podéis ver un filtro para forzar el dominio con «www»:

<urlrewrite>
    <rule>
      <name>seo redirect</name>
      <condition name="host" operator="notequal">^www.test.com</condition>
      <condition name="host" operator="notequal">^localhost</condition>
      <from>^/(.*)</from>
      <to type="permanent-redirect" last="true">http://www.test.com/$1</to>
    </rule>
</urlrewrite>

Otro ejemplo, redirección de una URL:

<urlrewrite>
    <rule>
      <from>^/url-antigua/foo/index\.html$</from>
      <to type="redirect">/url-nueva/bar//index.html</to>
   </rule>
</urlrewrite>

Más ejemplos aquí.

Una vez configurado todo, se reinicia Tomcat y verifica el funcionamiento de los rewrites.

Salir de la versión móvil