使用 mod_headers 中由 mod_rewrite 设置的环境变量

使用 mod_headers 中由 mod_rewrite 设置的环境变量

我想要实现的是访问 URL,然后http://myhost/eng/LOGIN/login?BID=12&BFORENAME=C&BSURNAME=C将这些参数作为请求的标头插入。这些参数是固定名称,因此我可以假设应该始终存在这 3 个参数。

我这样做的方法是使用 httpd.conf 中的 RewriteRule 来设置环境变量,然后使用 RequestHeader 根据环境变量设置标头。

首先,有人能建议一下要使用的规则吗?目前我看起来

RewriteEngine on
RewriteCond %{QUERY_STRING} BID=(.*)&BFORENAME=(.*)&BSURNAME=(.*)
RewriteRule ^(.*) $1? [R,E=VBID:%1,E=VF:%2,E=VS:%3]
RequestHeader set BID "%{VBID}e"
RequestHeader set BF "%{VF}e"
RequestHeader set BS "%{VS}e"

但是我一直得到一个空标头(如果我使用 env=varname,则没有标头)。

有人能指出我做错了什么以及为什么我似乎无法使用环境变量将值从重写规则传递到标题吗?

答案1

我在发帖后不久就回答了自己的问题,偶然发现了一个Stack Overflow 问题我之前从未见过。当使用环境变量和执行重定向的 RewriteRule 时,Apache 会通过在名称前面添加 REDIRECT_ 来更改名称。

令人沮丧的是,我只是为了测试目的而进行重定向,最终我只是想将参数捕获为标题,因此执行RewriteRule ^/- 可以完全避免这个问题。

相关内容