Comment faire en sorte que .htaccess fonctionne sur le répertoire en cours et non sur les sous-répertoires?

StackOverflow https://stackoverflow.com/questions/1200348

  •  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?

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top