J’ai envi de vous donner un tip pour pouvoir mutualiser vos fichiers d’un vritualhost sous plusieurs sous dossiers. Cela peut être très utile, par exemple si vous utilisez toujours les mêmes bibliothèques ou bien des images de substitutions sur plusieurs sites.
Tous d’abord il nous faut créer 1 domaine. Rendez-vous dans votre fichier de configuration des hosts sur votre machine.
Sous mac :
/etc/hosts
Sous window :
C:\WINDOWS\system32\drivers\etc\hosts
Puis rajouter les domaines suivants:
127.0.0.1 mon-domain.local
Maintenant il ne nous reste plus qu’à créer nos virtualhosts
Voici comment se structure l’arborescence de nos dossiers
– /chemin/vers/le/dossier/parent
|__ mon-dossier
|__ mon-dossier-de-substitution
Dans l’exemple suivant nous allons faire en sorte que ; dans le cas où un fichier .css ou .js n’existe pas dans mon-dossier, il sera recherché aussi dans mon-dossier-de-substitution
NameVirtualHost mon-domain.local:80 ServerName mon-domain.local DocumentRoot "/chemin/vers/le/dossier/parent" SetEnv APPLICATION_ENV "development" <Directory "/chemin/vers/le/dossier/parent"> Options Indexes +FollowSymLinks +Includes RewriteEngine on RewriteBase /mon-dossier/ AllowOverride All Order allow,deny Allow from all RewriteRule ^/(scripts|styles)/([^_]*)(?:_[a-z]{2}(?:-[a-zA-Z]{2})?)+\.(js|css)$ /$1/$2.$3 [N] RewriteCond %{DOCUMENT_ROOT}/mon-dossier/$0 -f RewriteRule ^(.*) /mon-dossier/$1 [L] RewriteCond %{DOCUMENT_ROOT}/mon-dossier-de-substitution/$0 -f RewriteRule ^(.*) /mon-dossier-de-substitution/$1 [L]
Voici l’explication tant attendu, mon-domain.local pointe sur le dossier /chemin/vers/le/dossier/parent. Grâce à la règle RewriteBase, les fichiers seront chargé depuis se dossier.
Par exemple un fichier index.html sera chargé depuis le dossier mon-dossier.
Puis nous ajoutons notre règle sur les fichier .js/.css, contenue respectivement dans les dossiers scripts et styles. Puis les conditions, si l’on trouve dans le dossier mon-dossier alors on prend le fichier, sinon il faut aussi chercher dans mon-dossier-de-substitution. Bien sûr si le fichier n’existe dans aucun des 2 dossiers une 404 sera présente.
RewriteRule ^/(scripts|styles)/([^_]*)(?:_[a-z]{2}(?:-[a-zA-Z]{2})?)+\.(js|css)$ /$1/$2.$3 [N] RewriteCond %{DOCUMENT_ROOT}/mon-dossier/$0 -f RewriteRule ^(.*) /mon-dossier/$1 [L] RewriteCond %{DOCUMENT_ROOT}/mon-dossier-de-substitution/$0 -f RewriteRule ^(.*) /mon-dossier-de-substitution/$1 [L]