2009-09-09 10 views
2

J'ai un fichier Apache .htaccess dans le répertoire parent pour le répertoire. Ce fichier .htaccess se trouve actuellement. Cela fonctionne parfaitement rediriger toutes les demandes selon les besoins. Cependant, je voudrais que dans ce répertoire, si la demande est pour un fichier valide (et non un répertoire), ignorer la règle de réécriture principale.mod_rewrite: Rediriger si autre chose qu'un fichier

Actuellement, ce qui suit désactive également la réécriture pour les répertoires, et je n'arrive pas à comprendre pourquoi.

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !-d 
RewriteCond %{REQUEST_URI} -f 
RewriteRule . - [L] 
</IfModule> 

Merci à tous ceux qui contribuent.

Répondre

1

Essayez REQUEST_FILENAME au lieu de REQUEST_URI:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule . - [L] 

REQUEST_URI ne contient que le chemin URI, mais a besoin d'Apache un chemin du système de fichier absolu pour tester agains -d et -f. Et REQUEST_FILENAME contient le chemin absolu du système de fichiers correspondant à l'URI demandé en cours.

+1

Pas de chance, j'ai peur. Bonne idée cependant, cela devrait fonctionner en théorie. Je blâme mes fournisseurs d'hébergement! – zanbaldwin

+0

@mynameiszanders: Essayez d'étudier les valeurs contenues dans 'REQUEST_FILENAME'. – Gumbo

Questions connexes