mod_rewrite com várias QUERY STRINGS

2

Esta é uma extensão da minha pergunta link

Estou tentando adicionar um parâmetro QUERY STRING adicional ao URL e alterar espaços para sublinhados, mas não estou obtendo sucesso.

Em vez de simplesmente mudar:

http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some.machinename.com

para:

http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some_machinename_com

Estou tentando alterar um parâmetro adicional como:

http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some.machinename.com&var-check=Check CPU Load

para:

http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_machinename_com&var-check=Check_CPU_Load

Usando a mesma lógica na minha pergunta respondida anteriormente, consigo que a primeira parte funcione usando:

RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)
RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3 [R=301]

Mas isso só obviamente me faz a primeira parte e sai assim:

http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_computername_com&var-check=Check%2520CPU%2520Load

Adicionei uma regra adicional QUERY_STRING e reescrever como:

RewriteCond %{QUERY_STRING} ^&var-check=(.*)\ (.*)\ (.*)
RewriteRule ^&var-check var-check=%1_%2_%3 [R=301]

... sem sucesso.

Eu também tentei combinar os dois:

RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)&(.*)\ (.*)\ (.*)
RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3&%4_%5_%6 [R=301]

.. também sem sucesso, bem como usando %20 \s e %2520 em vez de \ e um espaço ... assim como todos com um separador de tubos como \ |\s|%20|%2520 .

Idealmente, eu gostaria deste trabalho em uma reescrita, mas eu ficaria feliz em apenas ter o trabalho. Qualquer ajuda é apreciada.

    
por TryTryAgain 07.03.2016 / 22:49

1 resposta

1

Consegui obter isso adicionando a seguinte condição e regra.

RewriteCond %{QUERY_STRING} ^(.*)(%2520)(.*)(%2520)(.*)$
RewriteRule ^(.+)$ $1?%1_%3_%5 [R=301]

Infelizmente, preciso repetir esta regra para quantos espaços aparecerem. Eu tentei um monte de condições diferentes e regras [N] não parece fazer o que deveria fazer.

Ainda estou aberto para respostas, pois acho que isso pode ser feito de maneira melhor, mais confiável e / ou mais robusta.

    
por 09.03.2016 / 21:32