Lorsque vous explorez les fichiers à la racine d’une installation WordPress, vous découvrez dix-huit fichiers PHP, HTML, TXT et .htaccess en plus des trois dossiers que sont wp-admin, wp-includes et wp-content. Chacun de ces fichiers a un rôle bien défini dans l’infrastructure du CMS. Que vous soyez développeur, intégrateur ou administrateur, connaître leur fonction est essentiel pour bien gérer votre site.
La structure générale : Que contient la racine de WordPress sur le plan des fichiers ?
La racine de WordPress (aussi appelée « répertoire racine ») est le dossier principal à partir duquel le CMS est exécuté. Sur la plupart des hébergements, ce répertoire se nomme /public_html
, /www
ou simplement /
. Il contient des fichiers critiques nécessaires au bon fonctionnement du site, que WordPress soit utilisé comme blog, boutique ou site institutionnel. Dans une installation WordPress classique et complète, on trouve à la racine au moins 18 fichiers principaux. Voici une classification détaillée de ces fichiers par type et par fonction :
- Fichiers de configuration :
wp-config.php
– fichier essentiel contenant les paramètres de connexion à la base de données, les constantes système, et les réglages personnalisés.wp-config-sample.php
– modèle de configuration livré par défaut, à copier et adapter pour créerwp-config.php
..htaccess
– fichier serveur Apache servant à la réécriture d’URL, à la gestion des droits d’accès, des redirections et des performances (cache, compression…).
- Fichiers d’initialisation et de chargement :
index.php
– point d’entrée principal du site public. Il chargewp-blog-header.php
.wp-blog-header.php
– initialise WordPress côté visiteur et lance le moteur de rendu.wp-load.php
– prépare l’environnement de WordPress pour les scripts externes.wp-settings.php
– exécute l’initialisation complète du cœur WordPress (objets globaux, plugins, hooks, thèmes…).
- Fichiers liés à l’accès utilisateur :
wp-login.php
– gère l’authentification, la déconnexion, la réinitialisation du mot de passe.wp-signup.php
– formulaire d’inscription sur un réseau multisite.wp-activate.php
– active un compte utilisateur ou un site via une clé reçue par email (multisite).
- Fichiers système pour traitements automatiques :
wp-cron.php
– déclenche les tâches planifiées (nettoyage, ping, envoi de mails…), simulant un système de cron.wp-mail.php
– permet de publier des articles par email (fonction peu utilisée aujourd’hui).
- Fichiers liés aux commentaires et au contenu éditorial :
wp-comments-post.php
– réceptionne les soumissions de commentaires depuis les formulaires HTML des articles.wp-trackback.php
– ancien système de rétroliens entre blogs (obsolète aujourd’hui).wp-links-opml.php
– exporte les blogrolls (liens partenaires) au format OPML XML.
- Fichier de connectivité externe :
xmlrpc.php
– interface de communication à distance, utilisée par les apps mobiles ou plugins comme Jetpack (souvent désactivée aujourd’hui pour raisons de sécurité).
- Fichiers de documentation :
readme.html
– fichier d’introduction à WordPress, à supprimer pour éviter de divulguer la version du CMS.license.txt
– mentionne que WordPress est distribué sous licence GPL v2.
À noter que certains de ces fichiers (comme wp-signup.php
, wp-activate.php
ou wp-links-opml.php
) ne sont réellement utilisés que dans des cas précis : sites multisites, configurations avancées ou besoins techniques particuliers. Toutefois, ils restent inclus dans toutes les installations WordPress pour assurer la compatibilité maximale.
Le détail des fichiers racine WordPress
La racine de WordPress contient un ensemble de fichiers PHP, HTML et TXT qui participent à la configuration, au routage, à l’affichage, à la sécurité et à l’interfaçage avec l’extérieur. Voici un tableau explicatif de chacun d’eux :
Fichier | Fonction détaillée |
---|---|
index.php |
Point d’entrée du site côté public. Il charge wp-blog-header.php et ne contient que quelques lignes. C’est ce fichier que le serveur appelle lorsqu’un visiteur accède à une page du site. |
wp-blog-header.php |
Initialise l’environnement WordPress et lance le moteur de rendu de la page. Il appelle wp-load.php et template-loader.php . |
wp-load.php |
Point de démarrage universel. Localise et charge wp-config.php quel que soit le répertoire depuis lequel il est appelé. Utilisé par les scripts WordPress internes ou personnalisés. |
wp-settings.php |
Initialise les variables globales, charge les plugins, le cœur WordPress, les thèmes et toutes les fonctionnalités essentielles. Appelé depuis wp-config.php . |
wp-config.php |
Fichier de configuration principal du site. Il contient les informations de connexion à la base de données, les clés de sécurité, le préfixe des tables, et d’autres constantes personnalisées comme WP_DEBUG ou DISABLE_WP_CRON . |
wp-config-sample.php |
Modèle commenté de fichier wp-config.php . Il sert de base à la création manuelle de la configuration, notamment sur des serveurs sans interface automatique. |
.htaccess |
Fichier de configuration serveur pour Apache. Il permet de gérer les permaliens, les redirections, les règles de sécurité (blocage IP, protection des fichiers sensibles) et la mise en cache. |
wp-cron.php |
Simule un système de planification (cron) interne à WordPress. Déclenche automatiquement les tâches programmées (backups, notifications, mises à jour) lors de chaque visite. |
wp-login.php |
Gère l’ensemble du processus d’authentification : connexion, déconnexion, récupération de mot de passe, et inscription (si activée). |
wp-comments-post.php |
Intermédiaire technique pour traiter les soumissions de commentaires via les formulaires. Il valide et insère les commentaires dans la base, puis redirige l’utilisateur. |
wp-activate.php |
Gère l’activation de compte ou de site dans un réseau multisite. Il valide les liens envoyés par email lors de l’inscription et active les comptes en attente. |
wp-signup.php |
Page d’inscription multisite. Permet aux utilisateurs de créer un compte ou un nouveau site sur un réseau WordPress si cette fonctionnalité est activée. |
wp-trackback.php |
Ancienne interface de rétroliens entre blogs. Largement obsolète aujourd’hui, elle reste présente pour compatibilité, mais souvent désactivée pour éviter le spam massif. |
wp-links-opml.php |
Permet l’export au format OPML des liens présents dans la blogroll (table wp_links ). Fonction héritée des débuts de WordPress, peu utilisée aujourd’hui. |
xmlrpc.php |
Fournit une API XML-RPC pour interagir avec WordPress à distance (ex : apps mobiles, clients de publication). Cible fréquente de spam et attaques bruteforce, il est souvent bloqué. |
wp-mail.php |
Utilisé pour publier des articles via l’envoi d’emails. Fonctionnalité aujourd’hui désactivée ou non utilisée dans la majorité des installations. |
license.txt |
Contient le texte complet de la licence GNU GPL v2, sous laquelle WordPress est distribué. Ce fichier est purement informatif. |
readme.html |
Page d’introduction livrée avec WordPress. Affiche la version installée et des liens vers la documentation. Il est recommandé de le supprimer après installation pour des raisons de sécurité. |
Cette organisation modulaire permet à WordPress de rester extensible, évolutif et maintenable. Certains fichiers sont actifs uniquement dans des contextes particuliers (ex. multisite), mais doivent toujours être conservés pour assurer la compatibilité du CMS.
Les fichiers critiques à surveiller ou protéger pour sécuriser WordPress
La racine d’un site WordPress contient plusieurs fichiers sensibles qui peuvent devenir des vecteurs d’attaque s’ils sont mal protégés. Certains ne sont pas destinés à être consultés directement, mais peuvent pourtant être accessibles publiquement si le serveur est mal configuré. Voici les fichiers les plus critiques, les risques associés et les mesures de protection à mettre en place.
Fichier | Pourquoi est-il sensible ? | Que faire pour le sécuriser ? |
---|---|---|
wp-config.php |
Contient toutes les informations de connexion à la base de données, les clés de sécurité, et la configuration avancée du site. Une fuite de ce fichier met en danger l’ensemble du site. |
|
xmlrpc.php |
Fichier utilisé pour l’API XML-RPC (publication à distance, apps mobiles, Jetpack…). Mais il est souvent ciblé pour les attaques par brute force ou par pingback DDoS. |
|
readme.html |
Ce fichier statique affiche publiquement la version exacte de WordPress installée. Cela peut aider un pirate à cibler des failles connues dans cette version. |
|
.htaccess |
Fichier de configuration pour Apache : il définit les règles d’URL, les redirections, les protections d’accès, etc. Une erreur ou une suppression peut rendre le site inaccessible. |
|
wp-login.php |
Cible fréquente des attaques bruteforce. Même si ce n’est pas un fichier « secret », il est crucial de surveiller son accès. |
|
Quelques conseils généraux pour durcir la racine WordPress
- Supprimez ou masquez via .htaccess les fichiers inutiles : des fichiers comme
readme.html
oulicense.txt
ne sont pas indispensables au fonctionnement de WordPress. Ils peuvent révéler des informations sensibles, comme la version exacte du CMS, ce qui facilite les attaques ciblées. Si vous tenez à les garder, bloquez-en l’accès depuis le navigateur avec :<FilesMatch "^(readme\.html|license\.txt)$"> Order allow,deny Deny from all </FilesMatch>
- Évitez de déposer des fichiers PHP personnalisés à la racine : tout fichier placé ici est accessible en direct s’il n’est pas protégé. Il est préférable de créer un répertoire dédié (ex.
/includes/
,/tools/
, etc.) et d’y restreindre l’accès. Cela réduit les risques d’injection ou d’exécution de code malveillant. - Utilisez un pare-feu applicatif (WAF) : une solution comme Cloudflare (côté DNS) ou Wordfence (plugin WordPress) permet de bloquer automatiquement les tentatives d’intrusion, les requêtes malveillantes ou les scans de fichiers vulnérables. Ces outils offrent aussi une surveillance en temps réel des accès aux fichiers sensibles.
- Limitez les permissions en écriture : une erreur courante est d’attribuer des droits trop permissifs (comme
chmod 777
) à toute la racine. À la place, assurez-vous que :- les fichiers ont les droits
644
- les dossiers ont les droits
755
wp-config.php
peut aller jusqu’à600
sur les serveurs dédiés ou VPS
- les fichiers ont les droits
Ces pratiques sont simples à mettre en œuvre, mais particulièrement efficaces contre les attaques automatisées, les bots malveillants ou les scanners de vulnérabilités.
Rappel important : la majorité des fichiers situés à la racine appartiennent au noyau de WordPress. À l’exception de wp-config.php
(fichier de configuration) et .htaccess
(fichier serveur), aucun autre fichier ne devrait être modifié manuellement.
En effet, WordPress est conçu pour que les personnalisations passent par les thèmes, les plugins ou les hooks d’API. Toute modification directe sur un fichier natif risque d’être écrasée lors de la prochaine mise à jour, ou pire, de provoquer des erreurs fatales (white screen of death, redirections en boucle, erreurs 500, etc.).
Si vous devez personnaliser WordPress, faites-le via :
- le fichier
functions.php
de votre thème, - la création d’un plugin spécifique,
- ou via les hooks et filtres offerts par le CMS.
En connaissant bien les fichiers présents à la racine de votre installation, vous améliorez non seulement la sécurité de votre site, mais aussi sa performance et sa maintenabilité. Vous découvrez aussi le chargement de WordPress :
Comment WordPress se charge-t-il au démarrage via les fichiers à la racine ?
Quand un visiteur arrive sur votre site WordPress, un ensemble de fichiers s’enchaînent automatiquement pour charger l’environnement, interroger la base de données et afficher le bon contenu. Ce processus s’appelle le bootstrap WordPress. Il repose sur une logique simple mais puissante qui commence dès l’appel à la page demandée. Voici les principales étapes du chargement de WordPress à l’aide de ces fichiers à la racine du site Internet, dans l’ordre :
Fichier | Rôle dans le chargement |
---|---|
index.php (à la racine) |
Point d’entrée frontal du site. Il contient une seule instruction PHP : require __DIR__ . '/wp-blog-header.php'; . |
wp-blog-header.php |
Charge l’environnement WordPress via wp-load.php , puis déclenche la fonction wp() et enfin le système de templates via template-loader.php . |
wp-load.php |
Localise le fichier wp-config.php pour initialiser la configuration. Ce fichier agit comme point d’entrée universel pour tous les scripts personnalisés. |
wp-config.php |
Contient les identifiants de base de données, les constantes d’environnement, les clés de sécurité, le mode debug, etc. |
wp-settings.php |
Ce fichier est appelé depuis wp-config.php . Il initialise les constantes, charge les fichiers système, les plugins, le thème actif et les hooks principaux. |
template-loader.php |
Ce fichier qui se trouve dans le dossier wp-includes finalise le processus en chargeant le bon fichier de template du thème selon la requête : page.php , single.php , index.php du thème, etc. |
Petit résumé du processus de chargement pour conclure
Voici les cinq premières étapes du chargement de WordPress :
- Un internaute visite
votresite.com/actualites/
. - Le serveur n’ayant pas trouvé de fichier statique, exécute
index.php
. - Celui-ci appelle
wp-blog-header.php
, qui initialise tout l’environnement WordPress. - La base de données est interrogée, les plugins sont chargés, le thème actif est déterminé.
- Le bon fichier de template est exécuté pour afficher dynamiquement le contenu.
Ce mécanisme permet une très grande flexibilité : Vous pouvez personnaliser entièrement l’affichage tout en gardant la logique centrale de WordPress intacte. Il est également utile de comprendre cette chaîne de chargement pour mieux sécuriser ou optimiser les performances de votre site.
0 commentaires