2009-11-23 15 views
7

¿Hay alguna forma de utilizar el valor establecido en un SetEnv en la instrucción RewriteRule?regla mod_rewrite y setenv

Ejemplo:

SetEnv MY_SCRIPT myScript.php 

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

Respuesta

7

De acuerdo con http://httpd.apache.org/docs/2.0/env.html el SetEnv se llama después de RewriteRule. Por lo tanto, parece ser imposible utilizar cualquier conjunto de variables a través de SetEnv en una declaración RewriteRule- o RewriteCond.

Usando SetEnvIf por otro lado se llama antes de RewriteRule y por lo tanto las variables establecidas allí se pueden utilizar en una declaración RewriteRule- o RewriteCond.

Así que algo como lo siguiente debería funcionar:

SetEnvIf SERVER_PROTOCOL "HTTP.*" MY_SCRIPT=myScript.php 
rewriteEngine on 
RewriteRule ^(.*)$ %{ENV:MY_SCRIPT} [L] 
1

Uso %{ENV:MY_SCRIPT} en lugar de %{MY_SCRIPT}.

Cuestiones relacionadas