Comment faire en sorte que .htaccess fonctionne sur le répertoire en cours et non sur les sous-répertoires?
-
05-07-2019 - |
Question
J'utilise mod rewrite pour accéder indirectement à mes fichiers PHP situés dans le répertoire racine de mon site Web. Actuellement, j'ai quelque chose comme ça,
RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]
Mais ce que je voudrais utiliser est
RewriteRule ^(.*)$ /$1.php [L]
Pour ne pas avoir à mettre à jour mon fichier .htaccess chaque fois que je veux ajouter une nouvelle page à mon site Web. Le problème avec ceci est cependant que cela affecte aussi mes sous-répertoires. Ce qui rend CSS, les images javascript et les images inaccessibles car ils redirigent vers "/dir/example.png.php".
Alors, quelle est la meilleure solution ici?
La solution
Essayez cette règle:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]
Autres conseils
Modifiez le .htaccess
à ceci:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]
Après avoir démarré le moteur de réécriture, il vérifie d’abord si le fichier demandé est un fichier réel sur le système ou s’il s’agit bien d’un répertoire. Si ce n'est ni l'un ni l'autre, il exécutera la règle, qui dans ce cas consiste à essayer de trouver le fichier en ajoutant .php
et en le signifiant.
Les sous-répertoires, les images, les CSS, etc., iront bien car ils quitteront la réécriture une fois qu'ils auront été trouvés.
Je le ferais avec des filtres pour ignorer les sous-répertoires. De cette façon, vous ne devez le changer que si vous ajoutez un sous-dossier. Vous devez ajouter une ligne telle que Sosh si vous avez des images ou d’autres fichiers dans le dossier
.Les éléments suivants ignoreraient les "images". et " js " sous-dossiers et redirigez tout le reste
RewriteRule ^images* - [L]
RewriteRule ^js* - [L]
RewriteRule ^(.*)$ /$1.php [L]
Quelque chose comme ça (notez le!):
RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php