1 votes

Comment faire en sorte que l'option -f s'applique aux répertoires comportant une barre oblique à la fin ?

Je suis en train de construire un .htaccess avec un ensemble de règles assez complexe.

L'une des règles de base de la réécriture est cette première ligne :

Si le fichier demandé existe physiquement, pas de réécriture, arrêt des règles de traitement.

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

cela fonctionne bien à une exception près : Lorsque j'accède à un répertoire avec un barre oblique de fin

www.example.com/directory/

directory ne sera pas reconnue comme existante, alors que

www.example.com/directory

volonté.

Que puis-je faire pour qu'Apache reconnaisse également les répertoires existants avec une barre oblique ?

Informations générales, je suis déjà ajoutant une barre oblique à toutes les requêtes qui en sont dépourvues (pour tenir compte à la fois des /directory y /directory/ demandes.

1voto

Erik Points 12282
RewriteCond %{REQUEST_FILENAME} -d

L'abréviation -d signifie répertoire. De plus, selon http://stackoverflow.com/questions/286004/hidden-features-of-mod-rewrite La directive [L] ne fonctionne pas dans les fichiers .htacess, mais seulement si vous la placez dans les fichiers conf d'apache.

De même, si vous commencez simplement par.. :

RewriteEngine on
# Dont rewrite files or directories which actually exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Vous pouvez éviter de réécrire des fichiers ou des répertoires existants. Vos règles existantes disent "Si c'est un vrai fichier, continuez" alors que les miennes disent "Si ce n'est pas un vrai fichier et si ce n'est pas un vrai répertoire, continuez".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X