Erro Apache RewriteRule ao adicionar locais ao novo URL

Erro Apache RewriteRule ao adicionar locais ao novo URL

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(.*)

informação relacionada