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