Règles de réécriture multiples .htaccess avec extensions

Donc, je ne suis pas très bien avec les règles de config Apache ou les règles de réécriture .htaccess …. Et j’essaie de faire quelques modifications sur le fonctionnement de mon serveur localhost …

Ce que j’essaie de faire, c’est de renvoyer une erreur 404 sur toute requête avec l’extension ‘.php‘. Si l’URI n’a pas d’extension, acheminez la requête vers ‘ini.php’. Si l’URI contient une extension qui n’est pas de ‘.php’, alors il devrait simplement suivre les procédures normales pour récupérer le fichier.

Ce que j’ai maintenant:

Rewrite Engine on DirectorySlash off RewriteCond $1 (.php) RewriteRule ^(.*)$ - [L,NC,R=404] RewriteCond $1 !^(.+) RewriteRule ^(.*)$ ini.php [L,NC] 

Ma logique est la suivante: si ce n’est pas un Sinon, il devrait être acheminé normalement.

En ce moment, il semble que la règle .php fonctionne en renvoyant des erreurs 404. Cependant, si une demande de chemin sans extension est reçue, elle tente de se diriger vers ini.php et accède à une page 404. Est-ce que c’est peut-être en train de traiter comme la deuxième règle et ensuite de bash la première règle?

Quoi qu’il en soit, quelqu’un peut-il m’aider à régler ce problème et à me donner des conseils? J’ai essayé google et un tas de solutions différentes, mais je n’ai pas trouvé quelque chose qui a fonctionné pour cette situation …

MISE À JOUR: J’ai changé le code pour le suivant et ajouté ini.php aux parameters DirectoryIndex dans httpd:

 RewriteEngine on RewriteCond %{REQUEST_URI} (\.[php^\\/]+)$ RewriteRule ^(.*)$ - [L,NC,R=404] RewriteCond %{REQUEST_URI} !(\.[^\\/]+)$ RewriteRule ^.+$ / [L,NC] 

Pouvez-vous vérifier si cela semble correct?

J’ai réactivé DirectorySlash. Merci.

Cela le fera:

 RewrieEngine on # 404 any URL ending .php (ignoring any query ssortingng) RewriteRule ^(.+)\.php$ - [R=404,L,NC] # Rewrite any URL that does not contain a dot (.), and therefore has no extension, to ini.php RewriteRule ^([^.]*)$ ini.php [END] 

Je suppose que cela ira dans un fichier .htaccess de ce que vous avez dit. Il faudrait changer pour aller dans la configuration principale.

Ne pas désactiver DirectorySlash . C’est un risque de sécurité de le faire (voir le lien) et cela ne concerne que les répertoires existants, donc cela ne pose aucun problème pour vous. Il n’y a pas d’espace dans RewriteEngine .