mod_rewrite для замены всех точек подчеркиванием после пути

Я рассмотрел все вопросы с тегами здесь и на SO, но моя проблема в другом из-за того, что любой / оба требуют замены ". "с" _ "следует после определенного пути, и я использую прокси-сервер .

Я пытаюсь изменить:

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

Код:

Параметры + FollowSymLinks

RewriteEngine On

ProxyPreserveHost On

ProxyPass / grafana http://100.65.7.97:3000

ProxyPassReverse / grafana http://100.65.7.97:3000

Я много чего пробовал после нескольких часов поиска сбоя сервера / stackoverflow / webmasters.stackexchange / google и т. д. Но ничего, что я пробую, не перенаправляет. Не знаю почему.

Некоторые из вещей, которые я пробовал (и их варианты):

RewriteRule ^([^\.]*)\ (.*)$ $1_$2 [E=%E2:yes,N]
RewriteCond %{ENV:%E2} yes
RewriteRule (.*) http://%{HTTP_HOST}$1 [R=301,L]

...

RewriteRule       ^(/?grafana/dashboard/db/.*/[^/]*?).([^/]*?.[^/]*)$ $1_$2 [N]
RewriteRule       ^(/?grafana/dashboard/db/.*/[^/]*?).([^/.]*)$       $1_$2 [R=301]

...

RewriteCond %{REQUEST_URI} ^(.*).(.*).(.*)/$
RewriteRule (.*).(.*).(.*)/ http://somedomainname.com/grafana/dashboard/db/$1_$2_$3/ [R=301]

... и многие другие ...

Может ли это быть проблемой, потому что я также использую proxypass ? Может я просто упускаю из виду что-то простое? Любая помощь приветствуется.

0
задан 4 March 2016 в 01:50
1 ответ

var-device = SF-some.machinename.com является частью QUERY_STRING , а не REQUEST_URI . Ваше последнее правило выглядит правильно, за исключением того, что вам нужно избегать точек.

RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)
RewriteRule ^/grafana/dashboard/db/generic-ping /grafana/dashboard/db/generic-ping?%1_%2_%3 [R=301]

где % 1 = var-device = SF-some , % 2 = имя машины и % 3 = com .

1
ответ дан 4 December 2019 в 16:40

Теги

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