【发布时间】:2016-02-22 19:25:48
【问题描述】:
我们在 Apache vhost 中设置了一个环境变量 CODE
我想映射传入的请求
^/myresource?paramOne=one¶mTwo=two
到
/some-path-to/my-resource/resource.php?paramOne=one¶mTwo=two&code=theEnvCode
在 vhost RewriteRule 中,有没有办法将“code”查询参数设置为 env var CODE 的值,并从传入请求中传递所有其他查询参数?:
RewriteRule ^/my-resource /some-path-to/my-resource/resource.php [QSA,L]
Setenv CODE theEnvCode
编辑
一种可能性是硬编码“code”参数,请求中的任何其他参数都将被附加。但问题是如何保持同步 代码参数和环境变量CODE
RewriteRule ^/my-resource /some-path-to/my-resource/resource.php?code=theEnvCode [QSA,L]
Setenv CODE theEnvCode
对/my-resource?one=two&three=four 的请求将映射到/some-path-to/my-resource/resource.php?code=theEnvCode&one=two&three=four。
【问题讨论】:
-
不,您不能为此使用 setenv。但是 mod_rewrite 可以设置环境变量:
RewriteRule .* - [E=theEnvCode:$1]-kind of thing。 -
感谢@MarcB,在 RewriteRule 中有没有办法将“代码”参数设置为硬编码,但仍然从传入请求(QSA 事物)传递任何其他查询参数?
-
rewriterule 基本上只是一个正则表达式搜索/替换。如果你想要硬编码的东西,那就硬编码吧……
-
谢谢@MarcB,你介意给我一个上面描述的例子吗?我仍在使用 apache....
-
RewriteRule ^/my-resource /some-path-to/my-resource/resource.php?code=defaultcode [QSA, L] -- 你是这个意思吗?