Test d'existence d'un fichier : not-matched

Nouveau WRInaute
Bonjour à tous,

Il y a surement une petite nuance de htaccess que je n'ai pas compris ... J'ai une condition de réécriture :
Code:
  RewriteCond %{REQUEST_METHOD} GET
  RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}.php -f
  RewriteRule ^(.*) cache/%{HTTP_HOST}/$1.php [L]

Un système de cache comme vous pouvez le voir. Si le fichier existe en cache, je redirige vers ce fichier ... L'originalité réside dans les log du module rewrite :

Lors du premier passage, le test fonctionne bien :
Code:
RewriteCond: input='/home/user/projects/project/web/cache/localhost/fr/objects/test.php' pattern='-f' => matched

Mais après l'[INTERNAL REDIRECT], la même condition ne passe plus :

Code:
RewriteCond: input='/home/user/projects/project/web/cache/localhost/fr/objects/test.php' pattern='-f' => not-matched


Le test d'existence du fichier de cache ne match pas, or le fichier /home/user/projects/project/web/cache/localhost/fr/objects/test.php existe.

Voici le fichier HTACCESS complet :
Code:
Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]


  # we check if the .html version is here (caching)
  RewriteCond %{REQUEST_METHOD} GET
  RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}index.html.php -f
  RewriteRule ^(.*) cache/%{HTTP_HOST}/$1index.html.php [L]

  RewriteCond %{REQUEST_METHOD} GET
  RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}.html.php -f
  RewriteRule ^(.*) cache/%{HTTP_HOST}/$1.html.php [L]

  RewriteCond %{REQUEST_METHOD} GET
  RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}.php -f
  RewriteRule ^(.*) cache/%{HTTP_HOST}/$1.php [L]

  # no, so we redirect to our front web controller
  #RewriteRule ^$ index.html [QSA]
  #RewriteRule ^([^.]+)$ $1.html [QSA]

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

</IfModule>
 
Nouveau WRInaute
[SOLVED] Re: Test d'existence d'un fichier : not-matched

On continue l'enquête ...

Après examen des traces Chrome et Firefox, il semble qu'une première requête aboutisse à une redirection 302 Found, puis une deuxième requête renvoie le fichier non caché ...

Il s'agissait en fait d'un problème de lifetime ... Trop court (voire nul), à chaque reload, il trouvait le fichier caché précédemment, check le lifetime, supprime le fichier caché car périmé, puis recalcule la page et renvoie le résultat en écrivant le nouveau fichier caché, périmé d'avance ... La boucle est bouclée ...

12 heures d'enquête :)
 
Discussions similaires
Haut