Это продолжение моего вопроса 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
и %2520
вместо того \
и пробел ... а также все с разделителем труб вроде \ |\s|%20|%2520
.
В идеале я бы хотел, чтобы эта работа была переписана одним разом, но я был бы счастлив, если бы она работала. Любая помощь приветствуется.
Я смог получить это, добавив следующее условие и правило.
RewriteCond %{QUERY_STRING} ^(.*)(%2520)(.*)(%2520)(.*)$
RewriteRule ^(.+)$ $1?%1_%3_%5 [R=301]
К сожалению, мне нужно повторять это условие / правило, сколько бы пробелов ни появлялось. Я перепробовал кучу разных условий и правил [N]
похоже, никогда не делал того, что должен был делать.
Я все еще открыт для ответов, поскольку считаю, что это можно сделать лучше, надежнее и / или надежнее.