Guide de correction

Comment désactiver le listage de répertoire dans WordPress (Apache et nginx)

1 mai 2026 Mis à jour le 1 mai 2026

Si vous visitez l'URL d'un dossier sur votre site, par exemple https://votredomaine.com/wp-content/uploads/2024/, l'une de ces trois choses se produit. Vous voyez une page WordPress blanche et propre (parce que index.php prend le relais), vous voyez une page « 403 Forbidden », ou vous voyez quelque chose qui ressemble à un navigateur FTP : une liste de tous les fichiers du dossier, avec leurs tailles et leurs horodatages. Le troisième cas est le problème dont traite ce guide.

Le listage de répertoire (aussi appelé « directory browsing » ou « directory indexing ») est une fonctionnalité du serveur web qui rend automatiquement un index HTML lorsqu'aucun index.html ou index.php n'est trouvé dans un dossier. Sur un site statique, c'est parfois utile. Sur un site WordPress, c'est presque toujours une fuite. Ce guide explique précisément ce qui fuit, pourquoi cela importe, et comment désactiver correctement la fonctionnalité sur Apache, nginx et les différents hébergeurs WordPress managés.

Que se passe-t-il réellement quand le listage de répertoire est activé ?

La plupart des dossiers WordPress contiennent au moins un fichier intéressant pour un attaquant, un concurrent ou un visiteur simplement curieux. Les pires cas réalistes :

  • /wp-content/uploads/ contient tous les fichiers médias jamais téléversés, organisés par année et par mois. Avec le listage activé, n'importe qui peut voir des PDF qui ont été « déliés » mais jamais supprimés, des brouillons d'images, des documents clients, et tout fichier privé qu'un éditeur a téléversé en pensant qu'une « URL obscure » suffisait comme protection.
  • /wp-content/plugins/ révèle la liste exacte des extensions installées sur le site, y compris celles qui ont été désactivées mais non supprimées. C'est une liste de courses précise pour n'importe quel scanner de vulnérabilités.
  • /wp-content/backup/, /backups/, /wp-content/uploads/backups/ et autres dossiers similaires sont des destinations typiques pour les extensions de sauvegarde. Si le listage est activé, des dumps complets de base de données et des sauvegardes zippées du site deviennent directement téléchargeables.
  • Les dossiers de thèmes contiennent souvent d'anciennes versions de style.css, des fichiers SCSS résiduels, des pages de test cachées et des notes de développeur qui n'étaient pas censées être publiques.
  • Les dossiers racine du site peuvent montrer wp-config.php.bak, des fichiers d'échange d'éditeur (.swp), des répertoires .git/ issus d'un déploiement bâclé, et autres résidus de nettoyage similaires.

Les fichiers sensibles dans ces dossiers s'y trouvent généralement parce que quelqu'un les a téléversés rapidement, avec l'intention de les supprimer plus tard, et a oublié. Tant que le dossier ne liste pas son contenu, personne ne les trouve. À la seconde où le listage est activé, chaque URL dans ces dossiers est à un clic d'être indexée par un moteur de recherche ou récoltée par un scanner.

Comment vérifier si le listage de répertoire est activé sur votre site

Le test le plus rapide prend dix secondes. Ouvrez ces URL dans une fenêtre de navigation privée :

  • https://votredomaine.com/wp-content/
  • https://votredomaine.com/wp-content/uploads/
  • https://votredomaine.com/wp-content/plugins/
  • https://votredomaine.com/wp-includes/

Ce que vous voulez voir, c'est une page 403 Forbidden ou, dans le cas de /wp-content/, une page blanche vide (c'est l'index.php vide de WordPress qui fait son travail). Ce que vous ne voulez pas voir, c'est une liste de fichiers. Si vous en voyez une, le listage est activé pour ce dossier. InspectWP exécute également cette vérification lors de chaque analyse et signale les dossiers concernés dans la section sécurité.

Option 1 : désactiver le listage de répertoire sur Apache (et LiteSpeed)

La directive Apache qui contrôle ce comportement s'appelle Options, avec la valeur Indexes qui active le listage et Options Indexes qui peut être inversée en l'écrivant sans le signe plus en tête, plus un signe moins dans la directive elle-même. Ajoutez ce qui suit au fichier .htaccess dans le répertoire racine de votre WordPress, au-dessus du marqueur # BEGIN WordPress :

Options -Indexes

Cette unique ligne désactive le listage pour toute l'installation WordPress d'un seul coup. Elle s'applique à chaque dossier sous la racine du document, à moins qu'une règle plus spécifique ne la remplace plus profondément dans l'arborescence.

Si votre hébergeur bloque entièrement la directive Options dans .htaccess (certains hébergeurs mutualisés le font pour des raisons de performance), vous avez deux solutions de repli :

  1. Déposez un fichier index.php ou index.html vide dans chaque dossier que vous voulez verrouiller. WordPress le fait déjà pour /wp-content/, /wp-content/plugins/ et quelques autres, mais pas pour /wp-content/uploads/. Le fichier vide fait qu'Apache sert ce fichier au lieu de lister le dossier.
  2. Demandez à votre hébergeur d'activer la directive Options pour votre compte. La plupart des hébergeurs managés le feront sur demande.

L'astuce de l'index.php est simple mais facile à rater : vous devez penser à ajouter le fichier à chaque nouveau dossier créé, y compris les dossiers année/mois que WordPress crée automatiquement pour les nouveaux téléversements. Une règle au niveau du serveur web n'a pas ce problème.

Option 2 : désactiver le listage de répertoire sur nginx

Sur nginx, le listage de répertoire est contrôlé par la directive autoindex. Par défaut, elle est sur off dans la plupart des installations, donc sur une configuration nginx par défaut, le problème n'existe pas. Les dossiers que vous visitez retombent sur un 403 lorsqu'aucun fichier d'index n'est présent.

Si le listage est activé, c'est que quelqu'un l'a explicitement activé à un moment donné. Cherchez autoindex on; dans votre nginx.conf, dans le bloc server du site, ou dans n'importe quel fichier conf.d inclus. Soit retirez la ligne, soit changez-la en :

autoindex off;

Rechargez nginx avec sudo nginx -t && sudo systemctl reload nginx. La prochaine requête de dossier obtiendra un 403 au lieu d'une liste de fichiers.

Si vous ne pouvez pas recharger nginx (hébergement managé verrouillé), la même astuce de l'index.php de la section Apache fonctionne aussi sur nginx, car nginx servira volontiers un fichier d'index existant avant de retomber sur autoindex.

Option 3 : hébergement WordPress managé

Les hébergeurs managés (Raidboxes, Kinsta, WP Engine, Cloudways, Pressable, etc.) désactivent généralement le listage de répertoire par défaut au niveau serveur. Si vous constatez qu'un de ces hébergeurs a tout de même le listage activé sur votre compte, la bonne démarche est un rapide ticket de support. Ils ont accès à la configuration nginx centrale et peuvent corriger cela en quelques minutes. Tenter de contourner cela depuis WordPress sur un hébergeur managé en vaut rarement la peine.

Notez que certains hébergeurs utilisent une couche CDN (Cloudflare, KeyCDN, Bunny) qui met en cache les requêtes de dossiers. Si vous modifiez la configuration du serveur et que vous voyez toujours une liste de fichiers, le CDN peut servir une version mise en cache. Videz le cache pour les chemins concernés et testez à nouveau.

Erreur courante : protéger wp-content/uploads avec .htaccess

Un schéma qui apparaît dans les guides plus anciens consiste à placer un .htaccess séparé directement dans wp-content/uploads/ avec une longue liste de règles. L'intention est bonne, mais les effets de bord sont désordonnés : selon ce que contiennent les règles, les images téléversées peuvent ne plus se charger, le lazy loading peut être cassé, ou les PDF peuvent devenir inaccessibles. Si vous voulez seulement désactiver le listage, l'unique ligne Options -Indexes dans le .htaccess racine suffit. Elle s'applique récursivement. Pas besoin de fichiers séparés par dossier, sauf raison spécifique.

Et pour cacher les fichiers aux moteurs de recherche aussi ?

Désactiver le listage de répertoire empêche que l'index du dossier soit servi, mais cela n'empêche pas un moteur de recherche d'indexer des fichiers individuels à l'intérieur du dossier s'ils sont liés depuis quelque part sur le web public. Si vous avez des fichiers sensibles dans wp-content/uploads/ que vous ne voulez pas voir apparaître sur Google, supprimer le fichier est la seule réponse fiable. Les balises meta noindex, les en-têtes X-Robots-Tag et les entrées robots.txt aident pour la découverte, mais seule la suppression du fichier garantit que le contenu a disparu.

La règle générale est celle qui s'applique toujours au dossier uploads : ne téléversez rien que vous ne seriez pas à l'aise de voir en page d'accueil de votre site. Le dossier est un répertoire web public par conception.

Comment vérifier votre configuration

  1. Ouvrez https://votredomaine.com/wp-content/uploads/ dans une fenêtre de navigation privée. Résultat attendu : une page 403 Forbidden ou une page blanche (selon qu'un index.html vide est présent).
  2. Répétez pour tout autre dossier trouvé précédemment (/wp-content/plugins/, dossiers de thèmes, dossiers de téléversement personnalisés).
  3. Si vous voyez une liste de fichiers, le changement n'a pas pris effet. Vérifiez que vous avez modifié le bon .htaccess (celui de la racine WordPress, pas celui du répertoire parent de l'installation WordPress) et videz toutes les couches de cache.
  4. Lancez une nouvelle analyse InspectWP. La vérification « directory listing enabled » dans la section sécurité devrait être verte.

Tout le changement se résume à une seule ligne dans .htaccess sur Apache, ou à un paramètre de configuration sur nginx. Cinq secondes de travail, et toute une catégorie de divulgation accidentelle de fichiers disparaît. Ça vaut le coup sur chaque site, même si tout dans votre dossier uploads est actuellement correct. La protection vaut pour le prochain fichier que quelqu'un téléversera dans la précipitation, pas seulement pour ceux déjà présents.

Vérifiez votre site WordPress dès maintenant

InspectWP analyse votre site WordPress pour détecter les problèmes de sécurité, de SEO, de conformité RGPD et de performance — gratuitement.

Analyser votre site gratuitement