使用apache v-host中设置的环境变量设置查询参数

使用apache v-host中设置的环境变量设置查询参数,apache,vhosts,Apache,Vhosts,我们在apachevhost中设置了一个环境变量代码 我想映射传入的请求 ^/myresource?paramOne=one&paramTwo=two 到 在vhost重写规则中,是否有方法将“code”查询参数设置为env var代码的值,并传递传入请求中的所有其他查询参数 RewriteRule ^/my-resource /some-path-to/my-resource/resource.php [QSA,L] Setenv CODE theEnvCode 编辑 一种可能是

我们在apachevhost中设置了一个环境变量代码

我想映射传入的请求

^/myresource?paramOne=one&paramTwo=two

在vhost重写规则中,是否有方法将“code”查询参数设置为env var代码的值,并传递传入请求中的所有其他查询参数

RewriteRule ^/my-resource /some-path-to/my-resource/resource.php [QSA,L]

Setenv CODE theEnvCode
编辑

一种可能是对“code”参数进行硬编码,请求中的任何其他参数都将被追加。但问题是如何保持同步 代码参数和环境变量代码

RewriteRule ^/my-resource /some-path-to/my-resource/resource.php?code=theEnvCode [QSA,L]

Setenv CODE theEnvCode

/myresource?one=two&three=four
的请求将映射到
/myresource/resource.php?code=theEnvCode&one=two&three=four的某个路径

由于您重新编写而不是重定向到另一台服务器,因此您的env变量在目标URL中仍然可用。为什么不在PHP脚本中使用
apache\u getenv()
检索它呢?不需要将其作为GET参数传递。
请参见

否,您不能为此使用setenv。但是mod_rewrite可以设置env vars:
RewriteRule.*-[E=theEnvCode:$1]
-诸如此类。谢谢@MarcB,在RewriteRule中有没有一种方法可以将“code”参数设置为s硬编码的参数,但仍然从传入的请求(QSA)传递任何其他查询参数?RewriteRule基本上只是一个regex搜索/替换。如果你想要硬编码的东西,那么就硬编码吧……谢谢@MarcB,你介意给我举一个上述案例的例子吗?我仍然在使用apache…RewriteRule^/my resource/some path to/my resource/resource.php?code=defaultcode[QSA,L]--这就是你的意思吗?
RewriteRule ^/my-resource /some-path-to/my-resource/resource.php?code=theEnvCode [QSA,L]

Setenv CODE theEnvCode