2010-03-09 4 views
0

J'ai une application web qui a un ensemble de fichiers utilisés par les clients et 50+ toute la configuration pour chaque site provient d'un fichier config.php dans leurs répertoires respectifs. Ceci est accompli avec PHP analysant l'URL. Tout cela fonctionne très bien, juste d'avoir un problème avec les documents téléchargés personnalisés, le client peut faire et sont situés dansApache Rewrite: arborescence de répertoires sous-domaine répertoire

/var/www/sites/user1/cache

Il peut y avoir plusieurs subdirs. Donc, lorsque vous demandez http://user1.site.com/cache/subdir1/image.jpg il doit être lu à partir /var/www/sites/user1/cache/subdir1/image.jpg

Le client est autorisé à télécharger tout type de fichier, donc je dois juste le Réécrire prenez des demandes/cache, puis saisissez le sous-domaine et pointez sur le répertoire approprié.

est venu avec, mais je reçois encore une page invalide

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$ 
RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L] 

Toute aide est appréciée.

Répondre

0

/var/www/est l'endroit où les fichiers sont sur le système de fichiers. Je routage basé sur la racine du document, donc je n'ai pas besoin de mettre cela là. Mais j'ai réalisé qu'il me manquait la barre oblique principale sur/cache /. Même si ta réponse n'était pas vraiment ce que je cherchais, elle m'a fait voir ce qui me manquait. Merci.

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$ 
RewriteRule ^/cache/(.*)$ /sites/%1/cache/$1 [L] 
0

Si je lis correctement the RewriteRule documentation, l'indicateur L seul générerait une redirection interne, ce qui signifie que la substitution serait interprétée comme un chemin de système de fichiers local.

Essayez d'utiliser le chemin complet:

RewriteRule ^cache/(.*)$ /var/www/sites/%1/cache/$1 [L]

ou faire une, de laisser envoyer de nouveau le navigateur de l'utilisateur la demande redirection externe (en utilisant le statut de retour HTTP « 302 Moved Temporarily ») avec le nouveau chemin:

RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L,R]

Questions connexes