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

Это расширение моего вопроса 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 .

В идеале я бы хотел, чтобы эта работа была переписана одним разом, но я был бы счастлив, если бы она работала. Любая помощь приветствуется.

2
задан 13 April 2017 в 15:14
1 ответ

Я смог получить это, добавив следующее условие и правило.

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

К сожалению, мне нужно повторить это cond/rule для того, сколько бы пробелов не возникло. Я пробовал кучу разных условий и правила [N], похоже, никогда не делали то, что должно было.

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

.
1
ответ дан 3 December 2019 в 12:42

Теги

Похожие вопросы