Htaccess peut-il lire une variable d'environnement de serveur définie dans Apache?
Lorsque vous définissez un serveur variable d'environnement dans votre configuration d'Apache, il est possible de lire que la variable PHP à l'aide des fonctions intégrées.
Mais pouvez-vous lire une variable dans un fichier htaccess?
Ce que je suis en train d'accomplir dans mon htaccess est quelque chose le long des lignes de:
<If var=="stuff">
do things here
</if>
<if var=="different stuff">
do different things here
</if>
source d'informationauteur Tim Jahn | 2012-09-04
Vous devez vous connecter pour publier un commentaire.
Oui, il est.
Vous aurez probablement besoin d'utiliser mod_setenvif de la fonctionnalité, de sorte que le module devra être allumé.
Ensuite il vous suffit de faire quelque chose comme:
Qui permettrait de définir la variable d'environnement
image_type
avec une valeur degif
si la demande de nom de fichier se termine avec.gif
.Vous pourriez alors avoir accès à ce (comme dans RewriteCond) comme ceci:
Vous pouvez lire la documentation complète ici: http://httpd.apache.org/docs/2.2/env.html
Apache 2.4 introduit
<If>
<Else>
,<ElseIf>
blocs en conjonction avec une nouvelle syntaxe d'expression pour les plus puissants contrôle par programmation .fichiers htaccess, etc.Ce n'est pas testé mais apparemment fonctionne:
Source: https://blogs.apache.org/httpd/entry/new_in_httpd_2_4
Que j'ai eu beaucoup de problèmes de configuration d'une chose semblable à reconnaître ma maison localhost en tant que distincte de mon travail mis en place, voici ce que j'ai fini par faire.
D'abord et avant tout, La
<IF ..>
directive ne pas reconnaître SetEnv. De http://httpd.apache.org/docs/current/env.html : "SetEnv s'exécute tard au cours du traitement de la requête, ce qui signifie que des directives telles que SetEnvIf et RewriteCond ne verrez pas les variables définies avec elle."Donc, essayez d'utiliser SetEnvIf si vous le pouvez. J'ai été paresseux et il suffit de mettre ceci dans mon httpd.fichier conf. Il vérifie qu'il est en cours d'exécution sur localhost - qui est, évidemment, n'est - définit alors la variable:
Puis, d'ailleurs, dans mon fichier htaccess, j'ai eu ceci:
Alternativement, vous pouvez simplement avoir une variable pour chaque environnement et de lui donner une valeur spécifique:
Puis le reste serait la même, sauf que la première
<If ..>
déclaration:Je l'ai testé à la fois de ceux de une maison de l'environnement avec le 2.4 et un environnement de travail avec 2.2, qui avaient tous deux mod_version activé (donc, pas la peine avec le ifmod).
(J'ai pas testé pendant plus de deux environnements, mais Apache 2.4 donne une
<ElseIf>
donc c'est aussi une option).Doop di do.
(En savoir plus sur l'-T-opérateur et al: http://httpd.apache.org/docs/current/expr.html)