J'essaie d'ajouter une instruction conditionnelle à l'aide de la directive If d'Apache dans mon fichier .htaccess.
J'ai référencé cette page http://httpd.apache.org/docs/trunk/mod/core.html#if mais elle n'élabore pas beaucoup / donne beaucoup d'exemples. Il donne deux exemples incomplets:
<Si% {REQUEST_METHOD} DANS GET, HEAD, OPTIONS>
et
<Si "$ req {Host} = ''">
J'ai donc essayé d'ajouter ceci à mon fichier .htaccess:
<Si% {SERVER_PORT} DANS GET, HEAD, OPTIONS> # encore rien ici </If>
Mais je reçois toujours l' erreur 500 lorsque j'essaie de charger la page. C'est sur mon installation locale, et cela fonctionnait bien auparavant (ou si je supprimais ce code). Je crois que je l'ai AllowOverride All
mis en place globalement, et le contexte de la directive If devrait la laisser être présente dans .htaccess ("Contexte: configuration du serveur, hôte virtuel, répertoire, .htaccess").
Quelqu'un peut-il me donner des exemples sur la façon d'utiliser correctement la directive <If>, ou des conseils sur les raisons pour lesquelles cela ne fonctionne pas pour moi?
Merci!
SERVER_PORT
inGET,HEAD,OPTIONS
n'a aucun sens (SERVER_PORT
va être le numéro de port sur lequel la demande a été reçue).Réponses:
La
<If>
directive est uniquement disponible dans Apache 2.4+ et non 2.2 ou version antérieure.http://httpd.apache.org/docs/2.4/mod/core.html#if
Documentation non présente en 2.2:
http://httpd.apache.org/docs/2.2/mod/core.html#if
la source
<If>
n'est disponible que dans Apache 2.4+, alors assurez-vous d'abord que vous disposez de cette version.Exemples
Alternatives à
<If>
Il existe quelques autres solutions pour effectuer des instructions conditionnelles dans Apache 2.2 si vous êtes toujours bloqué avec cela.
Vous pouvez définir des variables d'environnement via:
SetEnvIf
RewriteMatch
Ensuite, vous pouvez effectuer des instructions conditionnelles en utilisant
Exemple:
la source
<IfDefine>
directive analyse uniquement au démarrage et leparameter-name
seul est possible en passant par l'invite de commande en utilisanthttpd -Dx=y