Это расширение моего вопроса https://serverfault.com/a/761474/77231
Я пытаюсь добавить дополнительную ЗАПРОСНУЮ СТРОКУ
в 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
и % 2520
вместо \
и пробел ... а также все с разделителем каналов вроде \ | \ s |% 20 |% 2520
.
В идеале я бы хотел, чтобы эта работа была переписана одним разом, но я был бы счастлив, если бы она работала. Любая помощь приветствуется.
Я смог получить это, добавив следующее условие и правило.
RewriteCond %{QUERY_STRING} ^(.*)(%2520)(.*)(%2520)(.*)$
RewriteRule ^(.+)$ $1?%1_%3_%5 [R=301]
К сожалению, мне нужно повторить это cond/rule для того, сколько бы пробелов не возникло. Я пробовал кучу разных условий и правила [N]
, похоже, никогда не делали то, что должно было.
Я все еще открыт для ответов, так как чувствую, что это может быть сделано лучше, надежнее, и/или надежнее.
.