Я рассмотрел все вопросы с тегами здесь и на 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
? Может я просто упускаю из виду что-то простое? Любая помощь приветствуется.
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
.