Configuração de URLs no Liferay
Tive algumas dificuldades para configurar virtual hosts, friendly urls e breadcrumbs no Liferay 6.0 EE SP1. Seguem os problemas que enfrentei e como resolvi.
Configurando Virtual Host
Para explicar o problema, vou utilizar duas comunidades hipotéticas: c1 e c2. Em meu portal, c1 é a comunidade da minha empresa e c2 é a comunidade de outra empresa, que não tem nada a ver com c1.
Meu portal é acessível através de http://www.c1.com.br. Para acessar c2, o caminho é http://www.c1.com.br/c2, ou seja, c2 só pode ser acessado através de c1. Essa hierarquia não faz sentido para o negócio. Precisava, de alguma forma, separar os domínios de c1 e c2 na mesma instância do Liferay, ou seja, acessar c1 através de http://www.c1.com.br e c2 através de http://www.c2.com.br.
Consegui usando virtual hosts, como explicaram no wiki do Liferay, aqui e um pouco nesse blog. Não fiz exatamente como explicaram lá:
1.) A página pública da comunidade c1 ficou:
2.) A página pública da comunidade c2 ficou:
3.) Para testar, alterei meu hosts da seguinte forma:
127.0.0.1 localhost
127.0.0.1 http://www.c1.com.br
127.0.0.1 http://www.c2.com.br
Para produção, será necessário configurar o DNS para mapear o IP da máquina onde está rodando o Liferay para diferentes URLs.
4.) E adicionei proxy bypassers no browser. Também “removi” a necessidade da porta 8080 no Tomcat com as dicas desse artigo.
É só adicionar uma página pública no virtual host para que o “/web/guest” da URL seja suprimido. O interessante é que agora há três formas de acessar c2:
http://www.c1.com.br/c2
http://www.c2.com.br
http://www.c2.com.br/c2
Note que no terceiro caso c2 é acessível à partir de c2. Isso é porque a friendly url aponta para o IP da mesma instância do Liferay e daí navega pelo restante do conteúdo como se fosse c1. Em alguns testes que fiz, mas não consegui reproduzir, ainda era necessário utilizar “/web” para acessar c2.
Problema Com Breadcrumb
Após a criação dos Virtual Hosts e configuração do hosts, as comunidades são acessível à partir de suas respectivas URLs. Porém, quando adiciono um breadcrumb em uma página de c2, o componente exibe o seguinte:
c1 – c2 – page2
Não vi uma forma de configurar o Breadcrumb para exibir apenas as informações de c2:
c2 – page2
Sei que no Liferay 6.1 é possível configurar esse comportamento no breadcrumb. Para o Liferay 6.0, é necessário criar um hook e redefinir o view.jsp do breadcrumb, como explicado aqui, aqui e aqui.
Essa solução funcionou para o portlet de breadcrumb, mas não para o breadcrumb do tema. Se quiser mesmo utilizar aquele breadcrumb, você precisa criar uma Extension e redefinir as propriedades “breadcrumb.show.guest.group” e “breadcrumb.show.parent.groups” do arquivo portal-ext.properties [1 e 2] para “false”. O grande problema da Extension é seu comportamento parasitário. Há duas formas de se livrar dela: instale uma versão limpa do Liferay e faça deploy dos seus .war ou tenha em mãos backup dos arquivos alterados para poder restaurar.
Dica: tentei repetir os procedimentos que eu mesmo escrevi e não deu certo…rsrs. O navegador estava com cache. Limpei e funcionou corretamente.