2010-06-23 5 views
8

Je voudrais configurer php5 apache d'une manière quiActiver PHP pour lire .css et .js tout en gardant leur type de contenu d'origine

  1. .css et .js seront inspectés par php
  2. leur type de contenu demeurera par défaut (qui est respectivement "text/css" et "application/x-javascript")

J'ai besoin parce que les deux fichiers CSS et JS utilisent PHP global vars. Cela me permet à partir d'un seul fichier PHP de contrôler dynamiquement le code CSS et JS (le projet est exporté de sorte que les fichiers css et js contiennent les valeurs réelles et non les échos PHP).

La façon dont je fais est en ce moment que j'ai ajouté .css et .js extension apache php5.conf:

AddType application/x-httpd-php .php .phtml .php3 .css .js 

Je l'utilise aussi en-tête ("Content-Type: [...] ') en haut de chaque fichier css/js pour changer la valeur de l'en-tête Content-Type en original. Ce n'est pas idéal car je dois ajouter manuellement cette ligne à chaque fichier css/js pour que l'en-tête Content-type soit approprié, même si je n'utilise pas les variables globales PHP.

Donc de toute façon je peux faire PHP inspecter les fichiers css/js tout en gardant leur Content-Type original sans avoir à modifier les fichiers css/js eux-mêmes?

Répondre

6

Je n'ai pas essayé, mais à partir de la documentation, il semble possible:

<Files *.css> 
    php_value default_mimetype "text/css" 
</Files> 
<Files *.js> 
    php_value default_mimetype "application/x-javascript" 
</Files> 
# ... and so on for other types 
+0

fantastique qui fonctionne :) J'utilise Zend, je mets juste que dans le public/.htaccess et qui fonctionne comme un charme. MERCI! – Max

2

Si j'avais absolument à faire cela, j'aurais fait une vue spéciale pour les fichiers CSS et JavaScript. Par exemple, je dirais à mon application de gérer toutes les demandes, par exemple, /pseudostatic/css/somefilename.js par un certain contrôleur, qui prendrait un modèle basé sur le nom d'un fichier demandé, ajouterait toutes les variables globales nécessaires et le servirait avec un nécessaire entête.

Et je voudrais utiliser la mise en cache basée sur l'horodatage du fichier.

Mais je pense que c'est vraiment une douleur inutile. Je parie que vous pouvez trouver un moyen de contourner le problème, comme garder la plupart de vos CSS et Javascript dans des fichiers statiques et ne charger qu'un petit peu de scripts et de styles générés côté serveur directement dans la page demandée. De cette façon, vous économiserez beaucoup de temps de traitement sur votre serveur.

Questions connexes