Get it on Google Play
08-02-2018
 

SEO Liferay 7: Mejorando las URLs amigables

SEO Liferay

SEO Liferay

La manera como Liferay trata las URLs es algo que da muchos quebraderos de cabeza a los desarrolladores. El hecho de tener en el primer nivel si la página es pública o privada, después el site y finalmente la página no ayuda a tener páginas y landings bonitas y, sobretodo, SEO Google Friendly.

Hace años que encontré solución a esto y no se porque no la había publicado todavía. La solución para tener una URL tipo ‘/concurso-telecinco’ que mapee una página interna de Liferay en ‘/web/site-concurso/form-concurso1’ pasa por implementar un filtro(Muy fácil en Liferay 7 gracias a los módulos OSGI).

El siguiente componente OSGI crea un filtro que cuando recibe una petición con ‘concurso-telecinco’ reenvía la petición a ‘/web/site-concurso/form-concurso1’. Se trata de una solución totalmente transparente para el usuario y Google. Aquí la tenéis:

@Component(
	immediate = true, 
	property = {
		"after-filter=Session Max Allowed Filter",
		"servlet-context-name=", 
		"servlet-filter-name=SEO Filter",
		"url-pattern=/*"
		}, 
	service = Filter.class
	)
public class SEOFilter extends BaseFilter {
	private static final Log _log = LogFactoryUtil.getLog(CustomFilter.class);
	
	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		HttpServletRequest request=(HttpServletRequest) servletRequest;
		
		if ( request.getRequestURI().indexOf("concurso-tele5")!=-1 ) {
			servletRequest.getRequestDispatcher( "/web/site-concurso/form-concurso1" ).forward(servletRequest, servletResponse);
			return;
			}
		
		super.doFilter(servletRequest, servletResponse, filterChain);
		}
	
	@Override
	protected Log getLog() { return _log; }

	}

Os lo dejo para que lo adaptéis a vuestras necesidades.

Si te ha servido, por favor comparte

Interesado en formación Liferay?

 

Leave a Reply