2009-09-02 8 views
4

je suit dans mon dossier .htaccess:détresse de Apache

SetEnvIf Host "^example\.com$" myvar=1 
<IfDefine myvar> 
    RewriteRule ^(.*)$ index2.php?q=$1 [L,QSA] 
</IfDefine> 

Pour autant que je peux dire, cela devrait fonctionner correctement. Cependant, "myvar" ne semble pas être défini quand je visite de example.com. Je sais que j'ai le activé (j'ai vérifié avec un bloc < IfModule>).

Des idées pour lesquelles "myvar" n'est pas défini?

Répondre

6

Ceci est vraiment une question ServerFault, mais de toute façon: IfDefine ne teste pas les variables d'environnement, il teste les options de configuration qui ont été transmises à Apache au démarrage. Ainsi, par exemple, si vous exécutiez

apache2 -D MYVAR 

alors une section

<IfDefine MYVAR> 
    ... 
</IfDefine> 

serait exécuté.

Je ne suis pas sûr s'il existe une directive de configuration Apache qui agit comme conditionnelle pour les variables d'environnement, comme vous le souhaitez.

+0

Y a-t-il un moyen de tester un ensemble de variables avec SetEnvIf? –

+0

Vous pouvez utiliser 'RewriteCond' pour créer une condition de réécriture qui dépend de la valeur d'une variable d'environnement ... autre que cela, je ne suis pas sûr qu'il existe d'autres directives qui utilisent des variables d'environnement. Ils sont principalement pour des scripts CGI, etc. –