2010-02-28 6 views
1

J'ai un système de mise en cache de fichiers pour une application php. si un fichier a besoin d'être mis en cache, je l'enregistre dans un répertoire cache comme un html plat imitant la structure de répertoires de la requête_urihtacces pour servir des fichiers en cache

Comment vérifier avec htaccess s'il existe un fichier plat dans ce répertoire cache avant de continuer comme d'habitude? Actuellement, je vérifie avec php, mais idéalement, s'il y a un fichier en cache, je ne voudrais pas avoir de code serveur sur cette requête. Ma configuration actuelle achemine tout via le fichier d'index, puis php détermine les fichiers à inclure en fonction de l'uri.

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

donc dire qu'une demande est arrivée comme

http://localhost/posts/45/the-name-of-my-post/ 
or 
http://localhost/posts/45/the-name-of-my-post 

comment pourrais-je vérifier s'il y a un fichier html plat situé dans

app/tmp/cache/posts/45/the-name-of-my-post/index.html 

Merci et désolé si cela est une question stupide, je suis assez novice avec des règles de réécriture. Si quelqu'un a une meilleure idée de comment éliminer le code php d'une requête en cache, je suis ouvert à tout.

ok maintenant essayer

essayé cela, mais doenst semblent travailler, qu'est-ce que je méconnais?

ma demande est

http://localhost/posts/view/23/another-post/ 

essayant de servir

http://localhost/app/tmp/cache/posts/view/23/another-post/ 

Répondre

1

Essayez ceci:

RewriteCond app/tmp/cache/%{REQUEST_URI} -d 
RewriteRule (.*) app/tmp/cache/%{REQUEST_URI}/ 
0

RewriteCond %{REQUEST_FILENAME} !-f

Cette déclaration dit déjà « si le fichier demandé n'existe pas passer à la la déclaration suivante, sinon récupérez-la "

+1

Si son web-root était app/tmp/cache/oui. Ce n'est presque certainement pas le cas ici. – jasonbar

Questions connexes