这是我的问题的扩展https://serverfault.com/a/761474/77231
我正在尝试向QUERY STRING
URL 添加一个附加参数并将空格更改为下划线,但没有成功。
而不是简单地改变:
http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some.machinename.com
至:
http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some_machinename_com
我正在尝试更改其他参数,例如:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some.machinename.com&var-check=Check CPU Load
至:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_machinename_com&var-check=Check_CPU_Load
在我之前回答的问题中使用相同的逻辑,我可以让第一部分使用:
RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)
RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3 [R=301]
但这显然让我得到了第一部分,结果如下:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_computername_com&var-check=Check%2520CPU%2520Load
我添加了一个额外的QUERY_STRING
重写规则,例如:
RewriteCond %{QUERY_STRING} ^&var-check=(.*)\ (.*)\ (.*)
RewriteRule ^&var-check var-check=%1_%2_%3 [R=301]
...没有成功。
我也尝试过将两者结合起来:
RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)&(.*)\ (.*)\ (.*)
RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3&%4_%5_%6 [R=301]
..也没有成功,以及使用%20
\s
and%2520
代替\
和空格...以及所有带有管道分隔符的\ |\s|%20|%2520
.
理想情况下,我希望在一次重写中完成这项工作,但我很乐意让它工作。任何帮助表示赞赏。
我能够通过添加以下条件和规则来得到这个。
不幸的是,我需要重复这个条件/规则,因为可能会出现很多空格。我尝试了一堆不同的条件和规则
[N]
似乎从来没有做它应该做的事情。我仍然愿意接受答案,因为我觉得这可以做得更好、更可靠和/或更强大。