11
votes

Supprimer les extensions .php avec .htaccess sans briser DirectoryIndex

J'ai la réécriture suivante dans mon fichier .htaccess qui supprime l'extension .php à partir des fichiers, convertissant par exemple so.com/question.php to to so.com/question . xxx

Cependant, ceci casse également le comportement DirectoryIdex par défaut, dans lequel la saisie simplement le répertoire redirigera le fichier d'index dans le dossier, par exemple so.com/answer affiche so.com/answer/index.php

combinant simplement le code ci-dessus avec Directoryindex index.php < / code> n'atteint pas les deux résultats.

Peut-être que quelqu'un peut m'aider à combiner ces deux fonctions ou réécrire le code pour exclure les fichiers index.php, ce qui obtiendrait le même résultat? >


0 commentaires

3 Réponses :


25
votes

Je pense que vous avez juste besoin de vérifier que le fichier existe avant de faire la réécriture, de cette façon, vous allez quitter 404 et les comportements DirectoryIndex intacts: xxx

(non testé) < / p>


2 commentaires

@ Timothée groleau Nice Code, est-il une option pour supprimer "index.php" pour la page d'accueil?


Travailler bien, j'ai eu peu de cas complexe, exemple.com/page .php? Id = 3479 & NAME = Ceci-is-Page-Name J'ai dû le convertir en exemple.com/page/?id=3479/name=Chis-is-page-name



2
votes
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]
verify files and folder and also, add RewriteBase /

4 commentaires

Celui-ci donne une erreur de serveur interne :(


étrange ... vous ajoutez également du moteur? :)


Oui, j'ai inclus rewriteEngine sur :)


@CRRSR, tout comme un point que vous n'échappez pas au . sur le 1er argres d'un cond. : -



2
votes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
I tested and it is working fine.

0 commentaires