Rewriting et système de cache

Nouveau WRInaute
Bonjour à tous,

J'utilise actuellement une règle de réécriture qui permet de transformer toutes les requetes de sousdomaine.site.com/* vers le repertoire users/sousdomaine/*

Code:
RewriteCond %{REQUEST_URI}   ^\/[^\/]+\.[^\/]+$ [NC]
RewriteRule ^(.+)   %{HTTP_HOST}$1 [C]
RewriteRule ^(www\.|)([^.]+)\.site\.com/(.*) /users/$2/$3 [L]

Je souhaite maintenant utiliser un système de cache qui permet de renvoyer la page statique si elle existe, sinon appeler une page dynamique qui va la reconstruire à la volée.
J'ai vu des exemples sur ce sujet, (qui utilisent notamment RewriteCond %{REQUEST_FILENAME} !-s ) mais mon cas est un peu différent,car il y a une étape en plus. en effet, je dois commencer par reecrire l'url, puis vérifier si celle-ci existe et enfin soit renvoyer le tout, soit passer la main à un script.

Voici 1 des transformations que je souhaite faire :

1.Transformer sousdomaine.site.com/yyyy/mm/dd/fichier.html
vers le repertoire users/sousdomaine/yyyy_mm_dd_fichier.html

et , seulement si ce fichier n'existe pas, renvoyer une page dynamique du style
/cfm/fe/FrontEngineUtility.cfc?method=getPage&siteName=sousdomaine&type=archive&year=yyyy&month=mm&day=dd

J'en ai d'autres, mais elle suivent la même logique, donc je devrais me débrouiller tout seul pour la suite :)

J'ai déjà fait un test en ajoutant à la suite du code ci-dessus le code suivant( et en changeant le flag [L] par [C] du haut aussi)

Code:
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule   ^/users/([^\/]+)/([^\/]+)  /cfm/fe/FrontEngineUtility.cfc?method=getPage&siteName=$1  [PT,L,NC]

Mais dans ce cas, toutes les pages sont renvoyés en dynamique, donc j'en deduis qu'il y a un problème avec la condition...

Merci beaucoup pour votre aide.



Jiib
 
WRInaute impliqué
Question : pourquoi ne testes tu pas l'existence du cache dans ta page CFM : si le cache existe tu le renvoies sinon tu affiche la page dynamique.

Ca fait beaucoup de manip' je trouve ^^ enfin c'est mon avis.
 
Nouveau WRInaute
Oui Jedi, ca peut être également une solution de gérer le cache au niveau de ColdFusion et non de Apache. Cependant je trouvais ça mieux de gèrer le cache avec le serveur web car cela permettait de moins charger le serveur d'application, et également de pouvoir servir quand même les pages statiques si ce dernier tombe. Mais en effet, pourquoi pas ta solution....

D'autres avis ?

Jiib
 
WRInaute impliqué
Hm si tes conditions sont bonnes mais le résultat "faux", t'as pensé à regardé ce qu'il te retournait comme fichier HTML de cache ? Parce que s'il le faut c'est bon mais y'a une p'tite erreur à 2 balles qui traine.
 
Nouveau WRInaute
Justement je pense que c'est le condition REQUEST_FILENAME qui n'est pas bonne, j'ai déjà essayé de faire un test avec les lignes ci-dessous, et dans tous les cas il appelle la page de script Coldfusion, même si le fichier existe déjà dans le repertoire.

Or je souhaite qu'il appelle le script uniquement si la page demandée après le RewriteRule du premier bloc est introuvable

Code:
RewriteCond %{REQUEST_URI}   ^\/[^\/]+\.[^\/]+$ [NC] 
RewriteRule ^(.+)   %{HTTP_HOST}$1 [C] 
RewriteRule ^(www\.|)([^.]+)\.site\.com/(.*) /users/$2/$3 [L]


RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule   ^/users/([^\/]+)/([^\/]+)  /cfm/fe/FrontEngineUtility.cfc?method=getPage&siteName=$1  [PT,L,NC]

ne fonctionn pas, car la condition est toujours vrai...
 
Nouveau WRInaute
Justement je pense que c'est le condition REQUEST_FILENAME qui n'est pas bonne, j'ai déjà essayé de faire un test avec les lignes ci-dessous, et dans tous les cas il appelle la page de script Coldfusion, même si le fichier existe déjà dans le repertoire.

Or je souhaite qu'il appelle le script uniquement si la page demandée après le RewriteRule du premier bloc est introuvable

Code:
RewriteCond %{REQUEST_URI}   ^\/[^\/]+\.[^\/]+$ [NC] 
RewriteRule ^(.+)   %{HTTP_HOST}$1 [C] 
RewriteRule ^(www\.|)([^.]+)\.site\.com/(.*) /users/$2/$3 [L]


RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule   ^/users/([^\/]+)/([^\/]+)  /cfm/fe/FrontEngineUtility.cfc?method=getPage&siteName=$1  [PT,L,NC]

ne fonctionn pas, car la condition est toujours vrai...
 
Nouveau WRInaute
Justement je pense que c'est le condition REQUEST_FILENAME qui n'est pas bonne, j'ai déjà essayé de faire un test avec les lignes ci-dessous, et dans tous les cas il appelle la page de script Coldfusion, même si le fichier existe déjà dans le repertoire.

Or je souhaite qu'il appelle le script uniquement si la page demandée après le RewriteRule du premier bloc est introuvable

Code:
RewriteCond %{REQUEST_URI}   ^\/[^\/]+\.[^\/]+$ [NC] 
RewriteRule ^(.+)   %{HTTP_HOST}$1 [C] 
RewriteRule ^(www\.|)([^.]+)\.site\.com/(.*) /users/$2/$3 [L]


RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule   ^/users/([^\/]+)/([^\/]+)  /cfm/fe/FrontEngineUtility.cfc?method=getPage&siteName=$1  [PT,L,NC]

ne fonctionn pas, car la condition est toujours vrai...
 
Discussions similaires
Haut