Skip to content

Tout pour WordPress, le développement web — et plus encore

Audit du .htaccess : erreur 500, directives mortes, signes de piratage

Audit du .htaccess : pourquoi le site renvoie 500 et quelles règles ne fonctionnent pas

Faites glisser le fichier — l'outil repérera le BOM, les directives mortes, les règles à fort risque d'erreur 500 et les signes d'une intervention extérieure. Le fichier est lu dans votre navigateur et n'est envoyé nulle part.

Les vérifications au niveau des octets — BOM, CRLF, caractères non imprimables et invisibles — ne sont possibles que pour un fichier. Lors d'un collage depuis le presse-papiers, le navigateur les a déjà supprimés : la cause la plus fréquente d'une erreur 500 devient donc invisible.
L'analyse démarre automatiquement. Le fichier n'est envoyé nulle part — c'est votre navigateur qui le lit.
Contexte

Un .htaccess propre ne guérit pas un piratage. Si le site est compromis, le code malveillant vit dans le PHP et le .htaccess n'en est que la conséquence : le dropper réécrira le fichier quelques minutes après votre nettoyage. L'ordre des opérations est inverse — trouver d'abord le code exécutable, puis remettre de l'ordre dans la configuration.

Le fichier est lu dans votre navigateur — son contenu n'est envoyé nulle part ni enregistré.

Pourquoi un fichier plutôt qu'un texte collé

La cause la plus fréquente d'une erreur 500 après modification de .htaccess n'est pas visible dans le texte. C'est le BOM — trois octets invisibles en début de fichier, ajoutés par le Bloc-notes de Windows lors d'un enregistrement en UTF-8. Apache les considère comme faisant partie de la première directive et ne parvient pas à l'analyser. C'est pourquoi l'outil demande le fichier lui-même : c'est le seul moyen de lire les octets et de voir le BOM, les retours à la ligne de style Windows et les caractères invisibles à l'intérieur des lignes. Deuxième groupe de problèmes : les directives qui ne font rien tout en paraissant opérationnelles. mod_gzip_on relève de la syntaxe d'Apache 1.3 ; sur les serveurs actuels, elle est ignorée en silence, tandis que l'on croit pendant des années que la compression est active. Un bloc ExpiresByType enveloppé dans un test sur mod_headers.c au lieu de mod_expires.c ne fonctionnera pas davantage — et sans indication, cela passe inaperçu. Troisièmement, php_value et php_flag. Ils ne fonctionnent que si PHP est chargé comme module Apache. Sur les hébergements modernes avec PHP-FPM, une telle ligne est soit ignorée, soit renvoie immédiatement une 500. Et un mot à part sur la sécurité : si le fichier contient des règles qui redirigent les visiteurs selon le moteur de recherche d'où ils viennent, ou qui masquent la redirection à l'administrateur, c'est un signe typique de compromission. Mais un .htaccess propre ne guérit pas le piratage : presque toujours, un script PHP réside quelque part dans les fichiers et le réécrira.

Questions fréquentes