2009-11-23 16 views
7

Esiste comunque il valore impostato in SetEnv nella dichiarazione RewriteRule?regola mod_rewrite e setenv

Esempio:

SetEnv MY_SCRIPT myScript.php 

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

risposta

7

Secondo http://httpd.apache.org/docs/2.0/env.html il SetEnv è chiamato dopo il RewriteRule. Pertanto, sembra impossibile utilizzare qualsiasi variabile impostata tramite SetEnv in un'istruzione RewriteRule o RewriteCond.

Uso SetEnvIf invece è chiamato prima la RewriteRule e quindi variabili impostate ci può essere utilizzato in un RewriteRule- o RewriteCond-economico.

Quindi, qualcosa come il seguente dovrebbe funzionare:

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

Uso %{ENV:MY_SCRIPT} invece di %{MY_SCRIPT}.