Les variables d'environnement non disponibles sur le server après mod_rewrite, mais fonctionne localement

Je travaille sur un site où j'utilise SSI pour définir une variable sur une page HTML qui est analysée et que la variable doit être récupérée par un script après une réécriture mod_rewrite . Cela fonctionne sur mon configuration locale, mais pour une raison quelconque, il ne fonctionne pas sur le server de production (les deux sont apache 2.2.22). Voici les bits pertinents:

Le script perl :

 my $working = ($ENV{'HTTP_my_var'} || $ENV{'REDIRECT_HTTP_my_var'}) || "NO"; print "Content-type: text/html\n\n"; print "is it working? <b>$working</b>"; 

lignes pertinentes de .htaccess

 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ /$1.html [L] RewriteRule ^my_tst$ /cgi-bin/my_tst.cgi [L] 

Le file HTML:

  <!--#set var="HTTP_my_var" value="YES" --> <!--#include virtual="/cgi-bin/my_tst.cgi" --> <br> <!--#include virtual="/my_tst" --> 

C'est le résultat de ma machine locale:

est-ce que ça marche? OUI

est-ce que ça marche? OUI

Mais sur le server de production:

est-ce que ça marche? OUI

est-ce que ça marche? NON

En comparant les configurations du server, la seule chose qui me préoccupe vraiment, c'est que sur le server de production httpd -M ne contient pas la list de apreq_module (shared) , et le server local ne répertorie pas fcgid_module (shared) (entre autres). Cela pourrait-il être dû à l'un de ces? Qu'est-ce qui pourrait causer cette incomparable incomparable dans le comportement?

Dans le cas où il faut mentionner, lorsque je fais un déchargement de %ENV , aucune des variables REDIRECT_ * n'apparaît dans le server de production dans la partie réécrire (la deuxième directive include le HTML), alors qu'ils le font sur le server local et le sortie non réécrit de la directive include.


Modifier: Ajout d'une autre variable, HTTP_my_var2 qui est définie dans .htaccess via une directive SetEnv , n'a pas de problèmes, c'est-à-dire que la valeur n'est pas détruit dans la réécriture.

Toutefois, le réglage de la variable avec SetEnvIf triggers le problème,


Edit1: Confirmé, il semble qu'il y ait une interaction étrange entre mod_suexec , mod_rewrite et mod_include (ainsi que mod_setenvif ). J'ai reproduit avec succès le problème localement en l'exécutant avec suexec activé. La désactivation de suexec en commentant la ligne SuexecUserGroup dans l'input VirtualHost (et le redémarrage du server) produit les résultats souhaités. Maintenant, pour enquêter sur les solutions possibles.

Cela pourrait être un bug dans apache httpd.

  • scripts suexec sans journalisation
  • Pourquoi restreindre les utilisateurs Apache à exécuter des scripts?
  • ApacheHTTPD mod_suexec, safe_mode, open_basedir
  • Apache RewriteRule pour chaque directory user
  • Problèmes de security liés à l'exécution des scripts PHP en tant que propriétaire du file PHP avec suexec
  • Problème de rechargement FastCGI apache (suexec)
  • erreur suexec configurant mod_fastcgi avec apache2.2.3 sur centos
  • Suexec, files enregistrables en groupe
  • problème avec la command suexec lorsque j'essaie d'initialiser virtualmin sur un PC avec le Webmin installé et fonctionnant
  • Comment changer le directory racine suexec de "/ var / www" à "/ home"?
  • Création d'users / groupes via PHP
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.