我已经在这里和 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
重写引擎开启
ProxyPreserveHost 开启
代理通行证 /grafana 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
。您的最后一条规则看起来有点正确,除非您需要转义这些句点。其中
%1
=var-device=SF-some
、%2
=machinename
和%3
=com
。