2009-07-05 7 views
1

J'essaie de créer une règle de réécriture conditionnelle en utilisant un fichier .htaccess et Apache. Fondamentalement ce dont j'ai besoin est que l'Apache vérifie si le fichier demandé existe dans un sous-dossier, cas dans lequel Apache servirait ce fichier existant, ou, si le fichier n'existe pas, Apache chargerait l'index.php fichier.Réécriture conditionnelle .htaccess

La structure du dossier que je utilise est:

- /gallery 
    - /cache 
    - index.php 
    - .htaccess 

aussi, le .htaccess que j'ai maintenant

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.+) - [PT,L] 
RewriteRule ^(.*)$ index.php/$1 [L] 

cependant, cela ne fonctionne que si le fichier que je suis en train de regarder car est dans le dossier/gallery, mais j'ai besoin de regarder si le fichier existe dans le dossier/cache à la place.

Est-ce que quelqu'un sait comment modifier ces règles pour y parvenir?

Nous vous remercions à l'avance,

titel

+0

Je ne pense pas que mod_rewrite puisse le faire mais je suis intéressé à voir si c'est possible. – MitMaro

Répondre

1

Essayez ces règles:

RewriteCond %{REQUEST_URI} ^/(([^/]+/)*)gallery/ 
RewriteCond %{DOCUMENT_ROOT}%1gallery/cache/$0 -f 
RewriteRule ^.+ cache/$0 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.* index.php/$0 [L] 

La première règle vérifie si le chemin est un chemin vers un fichier existant dans le cache répertoire . Si c'est le cas, il réécrit la requête dans ce fichier.

+0

Tout d'abord permettez-moi de vous remercier pour votre aide. Cependant, le script que vous avez fourni ne semble pas fonctionner sur ma configuration. Lorsque j'essaie d'accéder à quelque chose avec l'URL comme "example.com/gallery/220-165-clouds.jpg" je ne reçois pas l'image même si l'image existe dans le dossier/cache, et je ne pas le fichier index.php non plus. Ce que je reçois est une erreur 404 :( Savez-vous ce qui pourrait être la raison de cette – titel

+0

Juste une petite faute de frappe Il devrait maintenant – Gumbo

+0

Il fonctionne bien pour moi Essayez un peu de débogage avec la journalisation de mod_rewrite http?...: //httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel – Gumbo

Questions connexes