Mod rewrite 在httpd中设置env变量并在响应头中访问它们

Mod rewrite 在httpd中设置env变量并在响应头中访问它们,mod-rewrite,apache2,apache2.4,mod-headers,Mod Rewrite,Apache2,Apache2.4,Mod Headers,我有以下配置。我正在尝试使用我在重写规则中提取的值设置cookie。但是cookie的值总是设置为null。这是正则表达式的问题还是我在尝试做一些错误的事情。我对apachehttpd完全陌生 RewriteEngine On RewriteCond %{QUERY_STRING} ^(.*)uname=(.*) RewriteRule ^/(.*)&uname=(.*)$ /$1 [env=GRAFANA_UNAME:%2,L,PT] RewriteCond %{HTTP_COOKI

我有以下配置。我正在尝试使用我在重写规则中提取的值设置cookie。但是cookie的值总是设置为null。这是正则表达式的问题还是我在尝试做一些错误的事情。我对apachehttpd完全陌生

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)uname=(.*)
RewriteRule ^/(.*)&uname=(.*)$ /$1 [env=GRAFANA_UNAME:%2,L,PT]

RewriteCond %{HTTP_COOKIE} uname=(.*)
RewriteRule ^(.*)$ "-" [env=GRAFANA_UNAME:%1,L,PT]

RequestHeader set X-WEBAUTH-USER %{GRAFANA_UNAME}e

RequestHeader unset Authorization

ProxyRequests Off
ProxyPass "/" http://localhost:3000/
ProxyPassReverse "/" http://localhost:3000/

Header always set Set-Cookie "uname=%{GRAFANA_UNAME}e;path=/;HttpOnly"

当我执行uname=%{GRAFANA_uname}e时,cookie值总是被设置为null。如何在响应头中获取uname的值。

您的规则意味着这些指令不在htaccess中,但我的假设是,在真正处理您的请求之前,仍然会发生内部重定向

尝试访问重定向\u GRAFANA\u UNAME。每次发生内部重定向时都会添加该前缀,以区分当前请求和以前请求的环境