11

无论如何要使用语句中设置SetEnv的值吗?RewriteRule

例子:

SetEnv MY_SCRIPT myScript.php

rewriteEngine on
RewriteRule ^(.*)$  %{MY_SCRIPT} [L]
4

2 回答 2

13

根据http://httpd.apache.org/docs/2.0/env.html,SetEnv在 RewriteRule之后被调用。因此,似乎不可能在 RewriteRule 或 RewriteCond 语句中使用通过 SetEnv 设置的任何变量。

另一方面,使用 SetEnvIf 在RewriteRule之前调用,因此在那里设置的变量可以在 RewriteRule 或 RewriteCond 语句中使用。

所以像下面这样的东西应该可以工作:

SetEnvIf SERVER_PROTOCOL "HTTP.*" MY_SCRIPT=myScript.php
rewriteEngine on
RewriteRule ^(.*)$  %{ENV:MY_SCRIPT} [L]
于 2011-09-02T04:45:04.383 回答
1

使用%{ENV:MY_SCRIPT}而不是%{MY_SCRIPT}.

于 2009-11-24T10:18:52.890 回答