Forums

Home » Liferay Portal » Português

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Rodrigo Martins
404 Página Não Encontrada Específica Por Comunidade
December 10, 2012 6:47 AM
Answer

Rodrigo Martins

Rank: Regular Member

Posts: 101

Join Date: September 11, 2012

Recent Posts

Olá,

Utilizo o Liferay 6.0.12 EE SP2. O portal permite que eu crie comunidades diferentes, nas quais posso aplicar um tema específico e etc para que fique com a aparência de um site totalmente independente. Nessa linha, quando tentar acessar um página que não existe, o usuário deveria ser redirecionado para uma página de erro correspondente dentro do contexto da comunidade tendo ou não definido uma friendly url. No caso, defini uma para cada comunidade.

Vi que ao tentar acessar uma página que não existe em qualquer comunidade, somos redirecionados para uma página de erro que contém o tema da comunidade principal do portal. Ou seja:

> Se tentar acessar www.a.com.br/xpto, e xpto não existe na comunidade A, sou redirecionado para Página Não Encontrada com o tema da comunidade A
> Se tentar acessar www.b.com.br/xpto, e xpto não existe na comunidade B, sou redirecionado para Página Não Encontrada com o tema da comunidade A

Há uma propriedade no portal.properties que pode ser redefinida via hook para permitir que customizemos a página resultante do erro 404, que é a layout.friendly.url.page.not.found. Porém, isso é válido para uma e apenas uma comunidade, que é a comunidade principal do portal. O Jira http://issues.liferay.com/browse/LPS-25752 foi criado para a versão 6.2 CE, mas cabe no contexto do meu problema.

Há uma forma de criar uma página que redefinia o erro 404 Página Não Encontrada no contexto de cada comunidade?

Atenciosamente,
Rodrigo Martins
Rodrigo Martins
RE: 404 Página Não Encontrada Específica Por Comunidade
December 17, 2012 4:28 AM
Answer

Rodrigo Martins

Rank: Regular Member

Posts: 101

Join Date: September 11, 2012

Recent Posts

Foi pedida uma feature para o Liferay 6.2 que se adequa ao contexto do 6.0.

A.) http://issues.liferay.com/browse/LPS-25752

Uma discussão sobre o assunto pode ser encontrado abaixo:

B.) http://www.liferay.com/pt/community/forums/-/message_boards/message/11279721

Criei a página /page-not-found em cada comunidade. Conforme indicado em ( B. ), fiz um hook que redefine o arquivo /html/errors/404-searchworkings.jsp e lá fiz o redirecionamento manual para /page-not-found conforme o domínio. No arquivo portal-ext.properties do Liferay Home, adicionei as propriedades:

layout.show.http.status=true
layout.friendly.url.page.not.found=/html/errors/404-searchworkings.jsp
com.liferay.portal.servlet.filters.gzip.GZipFilter=false

Funcionou como eu queria. A única coisa que me incomoda é ter que alterar o portal-ext.properties no Liferay Home. Tentei, mas não consegui, criar um hook para o portal.properties com essas propriedades.

Espero que essa dica ajude.
Thiago Leão Moreira
RE: 404 Página Não Encontrada Específica Por Comunidade
December 16, 2012 1:00 PM
Answer

Thiago Leão Moreira

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1384

Join Date: October 10, 2007

Recent Posts

Olá Rodrigo,

Eu tive que implementar a mesma solução e funciona perfeitamente! Só que não fiz nada com hook pois já tinha um ext criado e achei mais pratico usar ele para fazer essas modificações.
Rodrigo, acho que algumas das propriedades que você listou não podem ser alteradas via hook somente via ext ou diretamente no arquivo portal-ext.properties.

Abraço
Rodrigo Martins
RE: 404 Página Não Encontrada Específica Por Comunidade
December 17, 2012 5:18 AM
Answer

Rodrigo Martins

Rank: Regular Member

Posts: 101

Join Date: September 11, 2012

Recent Posts

Oi Thiago,

Achei uma lista das propriedades que podem ser alteradas via hook no 6.0:
http://www.liferay.com/downloads/liferay-portal/available-releases/-/wiki/1071674/Hook+DTD+-+6.0/maximized

Pena que não dá para configurar as propriedades para trocar a página com hook. Com ext acho que fica meio intrusivo. Funcionou perfeitamente em ambiente local, mas quando subi para o ambiente de homologação, que é clusterizado e tem um Apache na frente, ocorreu uma exceção:

2012-12-13 15:04:48,270 INFO (ajp-0.0.0.0-8009-3) 15:04:48,269 ERROR [VirtualHostFilter:302] javax.servlet.ServletException: javax.servlet.jsp.JspException: Problem accessing the absolute URL "http://comunidade.com.br/page-not-found". java.net.ConnectException: Connection timed out
javax.servlet.ServletException: javax.servlet.jsp.JspException: Problem accessing the absolute URL "http://comunidade.com.br/page-not-found". java.net.ConnectException: Connection timed out
(...)

Parece que o DNS não está sabendo resolver a URL. Pesquisei em outros fóruns e vi que o pessoal também cita possível problema de configuração do DNS. Não tenho acesso ao ambiente de homologação do nosso portal, mas o pessoal que o mantém disse não saber o porquê do problema.

Você já viu isso? Dá para delegar a resolução de IP para o Apache?

Atenciosamente,
Rodrigo Martins
Rodrigo Martins
RE: 404 Página Não Encontrada Específica Por Comunidade
January 2, 2013 7:44 AM
Answer

Rodrigo Martins

Rank: Regular Member

Posts: 101

Join Date: September 11, 2012

Recent Posts

Troquei c:import por c:redirect e funcionou. Dessa forma, a resolução é feita no cliente e não no servidor. O único problema é que a URL apresentada aponta para a página não encontrada. A vantagem é que não preciso lembrar de alterar redirecionamentos no Apache e o hosts do S.O. para cada comunidade criada.

Atenciosamente,
Rodrigo Martins
Rodrigo Martins
RE: 404 Página Não Encontrada Específica Por Comunidade
March 13, 2013 11:07 AM
Answer

Rodrigo Martins

Rank: Regular Member

Posts: 101

Join Date: September 11, 2012

Recent Posts

Escrevi um artigo com considerações sobre três soluções que encontrei:

http://atitudereflexiva.wordpress.com/2013/02/05/redirecionamento-para-pagina-nao-encontrada-no-liferay/

Rodrigo