
Estou redirecionando um URL e queria usar a diretiva 'RewriteRule' durante o processo.
Atualmente tenho uma regra da seguinte forma:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
No entanto, também quero que isso funcione se um código de idioma for adicionado ao final do primeiro URL. Podem ser vários locais diferentes (nunca estáticos), então quero que o RewriteRule pegue o que vem depois de '.jsp' no primeiro URL e coloque-o depois de '.zul' no segundo.
Por exemplo algo como:
RewriteRule ^/application/web/reservation/index.jsp(*)$ https://application.domain.com/application2/web/reservation/audioForm.zul$1 [R,L]
Acredito que a sintaxe esteja errada para a parte de substituição:
(*)$ and $1 respectively
Só para você ver como fica o link com a localidade, coloquei um exemplo abaixo:
https://application.domain.com/application/web/reservation/index.jsp?locale=de-DE
Eu gostaria de colocar '?locale=de-DE' depois de .zul no segundo URL.
Alguém pode me dizer o que estou fazendo de errado? Qualquer ajuda seria muito apreciada.
Atenciosamente
Responder1
Na verdade, sua própria resposta não está correta.
Para corresponder a um específico(palavra específica é importante aqui)string de consulta, como o exemplo que você mencionou "?locale=de-DE'" você fariapreciso de um RewriteCondFazendo.
Mas neste caso específico, como o URL de destino não especifica uma string de consulta, o comportamento padrão do mod_rewrite é anexar a string de consulta original (seja lá o que for), a menos que você especifique o sinalizador QSD (descarte da string de consulta).
Então, brevemente:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
ou mesmo:
RewriteRule ^/application/web/reservation/index.jsp$ https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
corresponderia a uma solicitação para:
"/application/web/reservation/index.jsp?whatever"
e acrescentaria qualquer string de consulta ao destino especificado:
"https://application.domain.com/application2/web/reservation/audioForm.zul" porque não especifica uma string de consulta.
Responder2
Na verdade, descobri isso depois de algumas horas brincando e pesquisando a API mod_rewrite.
Módulo Apache mod_rewrite - Servidor HTTP Apache
Em vez de:
^/application/web/reservation/index.jsp(*)$
Eu usei:
^/application/web/reservation/index.jsp(.*)