J’ai décidé de faire une petite réécriture sur mon site. Actuellement, j’ai ce htaccess:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]
Qu’est-ce qu’il fait, c’est que vous pouvez entrer des documents .php sans append l’extension .php, comme
vous pouvez accéder au dossier / fichier.php en tapant dossier / fichier dans la barre d’URL.
Cependant, je me suis rendu compte que index.php ne fonctionnait plus.
Si j’essaie d’entrer l’index via le folder/index.php
ou le folder/index
, cela fonctionne bien mais ne l’ouvre pas lorsque vous tapez uniquement le folder/
Quelle règle me manque-t-il ici?
Désolé je ne suis pas habitué à htaccess. Merci de votre aide.
… mais il ne l’ouvre pas lorsque vous tapez simplement folder /
Je suppose que vous venez d’obtenir un 404?
Vous devez également exclure les répertoires d’être réécrits en interne. Par exemple:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L]
Alors maintenant, quand vous tapez example.com/folder/
(qui correspond à un répertoire , pas à un fichier ), il ne sera pas réécrit par les directives ci-dessus et mod_dir pourra charger DirectoryIndex
.
Outre: Il y a une autre réserve à avoir le même contenu accessible par toutes ces différentes URL (par exemple, folder/index.php
, folder/index
et folder/
) – vous avez maintenant un problème potentiel de contenu en double . Assurez-vous d’être cohérent dans vos liens internes, incluez les balises META canoniques et redirigez-les si cela devient un problème.