Я рассмотрел все вопросы с тегами здесь и на SO, но моя проблема в другом из-за того, что один / оба требуют замены ".
" с участием "_
"приходит после определенного пути, а я пробегаю proxypass
.
Я пытаюсь изменить:
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 / графана http://100.65.7.97:3000
ProxyPassReverse / grafana http://100.65.7.97:3000
Я пробовал много вещей после нескольких часов очистки serverfault / 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
знак равно machinename
и %3
знак равно com
.