Supprimer "index.html" de tous ses URL
Lorsque vous hébergez vos pages sur le serveur de votre nom de domaine, vous avez créé un fichier "index.html" qui correspond le plus souvent à la racine de votre site (la page d'accueil, ou homepage). Seulement, par souci d'esthétique ou toute autre raison, vous aimeriez qu'il n'apparaisse pas dans la barre d'adresse. Et ce non seulement pour la page d'accueil mais aussi pour tous les sous-dossiers contenant un fichier "index.html". On parle de réécriture d'URL.
J'ai finalement trouvé la solution sur ce site. Ce n'est d'ailleurs pas l'auteur de l'article qui a la réponse (sa méthode ne marche pas) mais le "Top Commentaire". Celle-ci est parfaitement valable et fonctionne à coup sûr, sans réécriture suspecte d'URL. Je l'utilise pour mon propre site et c'est la seule qui ait marché après multiples essais.
Méthode : Insérez les lignes suivantes dans votre fichier .htaccess :
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . http://www.%{HTTP_HOST}%1 [R=301,NE,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule . http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . %1 [R=301,NE,L]
Ainsi :
- www.example.com/index.html est automatiquement réécrit en www.example.com
- www.example.com/dossier/index.html est automatiquement réécrit en www.example.com/dossier/
- etc.
/!\ Attention, cela marche pour le fichier de configuration .htacess (Apache HTTP Server). La méthode sera différente pour d'autres types de serveurs.
N'oubliez pas de créer également des URL canoniques pour éviter le duplicate content (n'ayant pas d'article là-dessus, je vous invite à chercher sur le web).
Au passage, si vous cherchiez le code pour forcer le www devant chaque URL de votre site, le voici ci-dessous. Le RewriteEngine On
n'est pas utile si vous l'avez déjà écrit dans le code précédent.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*) http://www.example.com/ [QSA,L,R=301]
Avec ce code, si quelqu'un écrit example.com, l'URL sera réécrite en www.example.com.