Fórumok

404 Página Não Encontrada Específica Por Comunidade

thumbnail
Rodrigo Martins, módosítva 11 év-val korábban

404 Página Não Encontrada Específica Por Comunidade

Regular Member Bejegyzések: 101 Csatlakozás dátuma: 2012.09.11. Legújabb bejegyzések
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
thumbnail
Rodrigo Martins, módosítva 11 év-val korábban

RE: 404 Página Não Encontrada Específica Por Comunidade

Regular Member Bejegyzések: 101 Csatlakozás dátuma: 2012.09.11. Legújabb bejegyzések
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.
thumbnail
Thiago Leão Moreira, módosítva 11 év-val korábban

RE: 404 Página Não Encontrada Específica Por Comunidade

Liferay Legend Bejegyzések: 1449 Csatlakozás dátuma: 2007.10.10. Legújabb bejegyzések
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
thumbnail
Rodrigo Martins, módosítva 11 év-val korábban

RE: 404 Página Não Encontrada Específica Por Comunidade

Regular Member Bejegyzések: 101 Csatlakozás dátuma: 2012.09.11. Legújabb bejegyzések
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 [STDOUT] (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
thumbnail
Rodrigo Martins, módosítva 11 év-val korábban

RE: 404 Página Não Encontrada Específica Por Comunidade

Regular Member Bejegyzések: 101 Csatlakozás dátuma: 2012.09.11. Legújabb bejegyzések
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
thumbnail
Rodrigo Martins, módosítva 11 év-val korábban

RE: 404 Página Não Encontrada Específica Por Comunidade

Regular Member Bejegyzések: 101 Csatlakozás dátuma: 2012.09.11. Legújabb bejegyzések
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