Vous pouvez ajouter un condition d'exclure les URL qui peuvent être mis en correspondance avec les fichiers réellement existants:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* controller.php
Le mot-clé -f
va tester si le chemin absolu dans %{REQUEST_FILENAME}
est un chemin vers un fichier régulier existant dans le système de fichiers et !-f
est juste l'inverse.
Mais si vous avez une liste fixe de répertoires que vous souhaitez exclure, vous pouvez aussi le faire:
RewriteCond $0 !^(assets|foo|bar)/
RewriteRule ^.* controller.php
Ce tests de condition si le match de l'ensemble RewriteRule
motif (référencé avec $0
) ne commence pas avec ni assets/
ni foo/
ni bar/
. Si vous ne voulez pas traiter le match, vous pouvez également utiliser une expression niée directement dans votre directive RewriteRule
:
RewriteRule !^(assets|foo|bar)/ controller.php
Ce n'est pas un très bon cas de sécurité car il permet un accès direct aux fichiers qui existent. La sécurité par l'obscurité si vous savez ce que je veux dire. – AbiusX