Назад | Перейти на главную страницу

mod_rewrite с несколькими СТРОКАМИ ЗАПРОСА

Это продолжение моего вопроса 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] похоже, никогда не делал того, что должен был делать.

Я все еще открыт для ответов, поскольку считаю, что это можно сделать лучше, надежнее и / или надежнее.