Urls virtuais, path relativo, absoluto e proxy  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

A situacao eh a seguinte: no JForum eu tenho um esquema de "url amigavel". Ou seja, ao inves dos links serem na forma



eh possivel acessar simplesmente digitando



Porem, obviamente nao existe a estrutura de diretorios "/posts/list/15", o que me obrigou a usar a tag <base href="..."> do HTML para informar ao browser o diretorio raiz ( base ) do site, ficando algo como



dessa forma, os links e paths de imagens podem ser escritos normalmente, usando <img src="templates/blah/images/logo.jpg>. Isso nao seria possivel sem a tag <base>, uma vez que o browser tentaria buscar na estrutura "/posts/list/15/templates/blah/images/logo.jpg".

O uso de <base> funciona ok para a maior parte das situacoes, porem, ha alguns problemas quando o forum eh acessado via algum Rewrite de URL do webserver, como o mod_proxy do Apache.
Com o mod_proxy, eh possivel fazer algo no estilo

Host: https://server.externo.dominio.com


Host: http://server.intranet


Ou seja, eh feito um mapeamento nos servidores para que, se algum digitar /forum, o Apache redirecione, "por baixo dos panos", para o Tomcat. E ai eh que da problema, uma vez que a tag base vai ficar com o valor



sendo que o correto seria ficar com o valor do host origjnal.

Nesses casos ja eh usado mod_jk para integrar Tomcat e Apache, sem problemas. O ponto eh somemente quando usando essas configuracoes de proxy.

Alguem tem alguma ideia de como resolver / contornar esse problema, seja ele qual for?!? .. Por enquanto, a unica ideia que me vem a cabeca seria desabilitar as "ulrs amigaveis' e usar tudo na forma normal. Mas eh uma solucao que nao em agrada.

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Perai, o mod_rewrite esta reescrevendo a tag base?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Nao, nao eh usado mod_rewrite. O valor da tag <base>, atualmente, eh setado no braco, via arquivo de configuracao, mas daria no mesmo se pegasse o valor via codigo, usando o getContextPath(), getServerName() etc...

Talvez eu esteja lidando com a situacao da forma errada, ja que fiquei 'viciado' no problema. Pensei em usar paths relativos a contexto, na forma



mas isso de qualquer forma obrigaria a URL original ser "/meuContexto" tambem, nao?!..

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Hmmm... cara, vc tem que pensar como o browser nessas horas...

Se voce esta na pagina /page/cv/index.html, e tem uma tag img apontando pra /images/foo.jpg, o browser vai fazer GET /images/foo.jpg. Ate ai, facil.

Se voce esta na pagina /page/cv/index.html, e tem uma tag img apontando pra ../images/foo.jpg, o browser vai fazer GET /page/images/foo.jpg. Beleza, tambem.

Se voce colocar um <base>, e poe /images/foo.jpg, voce ganha um GET /base/images/foo.jpg. Se voce colocar ../images/foo.jpg, eu ja nao sei o que acontece (fazer o que )

Entao, o problema eh basicamente o de sincronizar a tag <base> com o que o browser realmente recebe - ou seja, configurar a tag pra que ela mande pro cliente a URL base que o httpd esta redirecionando
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Richardson
JavaTeenager
[Avatar]

Membro desde: 29/10/2002 16:54:29
Mensagens: 178
Localização: Recife/PE
Offline

Rafael, pq vc prefere esse URL amigável?

Como vc trata essa URL? Uma vez fiz isso em php e eu tinha que tratar tudo depois do /tagAmigavel/... com expressão regular. Com java nunca pensei em fazer isso. Gostaria de saber sua opinião sobre as vantagens disso.

valeu!

El Peregrino del Camino de Santiago

RecJUG :: Recife Java User Group
www.recjug.com.br
[WWW] [Yahoo!] [MSN] [ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Richardson, esses dois links provavelmente respondem a sua pergunta

https://urlrewrite.dev.java.net/

http://www.useit.com/alertbox/990321.html
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Interessante esse projeto URLRewrite..

Richardson, o segundo link do cv ja responde o resto

No jforum eu fiz o meu proprio esquema para tratar essas urls, ate pq nao conhecia nenhum projeto para lidar com isso ( claro, tmb nao me dei ao trabalho de sequer pensar em procurar ).

De qualquer forma, eu basicamente defino um arquivo .properties com a url que eu quero, e entao, a cada request, quebro ela em partes em procuro por um padrao. Veja:

urlPattern.properties
https://jforum.dev.java.net/source/browse/jforum/WEB-INF/config/urlPattern.properties?rev=1.5&content-type=text/vnd.viewcvs-markup

ActionServletRequest.java: guarda os padroes e processa a url
https://jforum.dev.java.net/source/browse/jforum/src/net/jforum/ActionServletRequest.java?rev=1.6&content-type=text/vnd.viewcvs-markup

Funciona relativamente bem pras necessidades do sistema, ate o momento.

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Richardson
JavaTeenager
[Avatar]

Membro desde: 29/10/2002 16:54:29
Mensagens: 178
Localização: Recife/PE
Offline

Valeu pessoal, sua solução Rafael é bem parecida com a que eu fiz em php. Quando eu fiz eu queria facilitar para o usuário um link tipo www.site.com.br/hotsite. Essa era minha única motivação, por isso procurei saber a opinião de vcs.

Valeu!!

El Peregrino del Camino de Santiago

RecJUG :: Recife Java User Group
www.recjug.com.br
[WWW] [Yahoo!] [MSN] [ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team