2010-06-09 4 views
1

Je travaille sur un projet Zend Framework dans lequel j'ai trébuché sur un problème. Le problème provient du fait que les modules sont des citoyens de 2ème classe dans Zend Framework. Dans mon projet, j'aimerais que chaque module contienne un dossier contenant des fichiers accessibles depuis l'extérieur - des fichiers tels que des feuilles de style, des javascripts et des images.Apache - règle de réécriture "dynamique"

Maintenant, comment cela doit-il être fait. Avec un projet Zend Framework, j'ai une structure de dossiers qui ressemble à ceci:

  • application/
    • modules/
      • moduleOne/
        • publique/
          • stylesheet .css
      • moduleTwo/
      • moduleThree/
  • public/
    • index.php

La norme .h fichier taccess situé dans le dossier public/ détient ceci:

SetEnv APPLICATION_ENV development 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

La façon dont il fonctionne, est que apache DocumentRoot est le dossier public/ du projet. Toutes les demandes sont redirigées via le fichier index.php où le composant routeur de Zend Framework prend le relais. Maintenant, je ne suis en aucun cas un expert avec Apache ni mod_rewrite alors pardonnez-moi si c'est juste idiot. J'imagine que j'implémente une étape supplémentaire dans la règle de réécriture existante de sorte que si je demande http://project/public/moduleOne/stylesheet.css il résoudra par exemple à /var/www/project/application/modules/moduleOne/public/stylesheet.css. Donc, les étapes qui doivent être faites sont de vérifier si le premier élément de l'URI est public/ si c'est le cas, nous prenons le segment suivant comme nom de module et l'utilisons dans le chemin que nous essayons résoudre et tenter de servir le fichier.

Est-ce possible ou est-ce que quelqu'un a une meilleure suggestion?

Merci pour votre temps Christian Rasmussen

Répondre

0

Avec juste Mod_rewrite vous ne pouvez pas demander des fichiers en dehors de la racine du document. La seule solution est donc d'utiliser le lien symbolique situé dans le répertoire racine du document et pointant vers le répertoire des modules.

+0

Salut Ololo, désolé d'avoir oublié cette question. Vous aviez en effet raison d'accéder à des ressources en dehors de la racine du document. Je vous remercie sincèrement pour votre réponse. –